在Ruby中如何生成一长串重复文本?

时间:2010-02-19 14:33:06

标签: ruby string

在ruby中快速生成长字符串的最佳方法是什么?这有效,但速度很慢:

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

我还注意到,创建一个长度合适的字符串,然后将其附加到现有字符串,达到所需长度的速度要快得多:

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

还有其他建议吗?

3 个答案:

答案 0 :(得分:285)

str = "0" * 999999

答案 1 :(得分:10)

另一个相对快速的选择是

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)

答案 2 :(得分:-4)

999999999999999999.times{
 print "0"
}