在Ruby中,我如何生成一串重复的文本?

在ruby中快速生成一个长string的最好方法是什么? 这工作,但很慢:

str = "" length = 100000 (1..length).each {|i| str += "0"} 

我也注意到,创build一个体面的长度的string,然后将其附加到现有的string达到所需的长度工作更快:

 str = "" incrementor = "" length = 100000 (1..1000).each {|i| incrementor += "0"} (1..100).each {|i| str += incrementor} 

还有其他build议吗?

 str = "0" * 999999 

另一个比较快速的select是

 str = '%0999999d' % 0 

虽然基准

 require 'benchmark' Benchmark.bm(9) do |x| x.report('format :') { '%099999999d' % 0 } x.report('multiply:') { '0' * 99999999 } end 

显示乘法运算仍然更快

  user system total real format : 0.300000 0.080000 0.380000 ( 0.405345) multiply: 0.080000 0.080000 0.160000 ( 0.172504) 
 999999999999999999.times{ print "0" }