Что лучший способ состоит в том, чтобы генерировать длинную строку быстро в рубине? Это работает, но очень медленно:
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)