在ruby中快速生成长字符串的最佳方法是什么?这有效,但速度很慢:
str = ""
length = 100000
(1..length).each {|i| str += "0"}
Run Code Online (Sandbox Code Playgroud)
我还注意到,创建一个相当长的字符串,然后将其附加到现有字符串,达到所需的长度会更快:
str = ""
incrementor = ""
length = 100000
(1..1000).each {|i| incrementor += "0"}
(1..100).each {|i| str += incrementor}
Run Code Online (Sandbox Code Playgroud)
还有其他建议吗?
FMc*_*FMc 296
str = "0" * 999999
Run Code Online (Sandbox Code Playgroud)
ram*_*ion 11
另一个相对快速的选择是
str = '%0999999d' % 0
Run Code Online (Sandbox Code Playgroud)
通过基准测试
require 'benchmark'
Benchmark.bm(9) do |x|
x.report('format :') { '%099999999d' % 0 }
x.report('multiply:') { '0' * 99999999 }
end
Run Code Online (Sandbox Code Playgroud)
表明乘法仍然更快
user system total real
format : 0.300000 0.080000 0.380000 ( 0.405345)
multiply: 0.080000 0.080000 0.160000 ( 0.172504)
Run Code Online (Sandbox Code Playgroud)