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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

在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}
提问于
用户回答回答于
用户回答回答于

另一个相对快速的方法是

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)

扫码关注云+社区