В Ruby, как создать длинную строку повторяющегося текста? - PullRequest
130 голосов
/ 19 февраля 2010

Каков наилучший способ быстрой генерации длинной строки в 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 ]

289 голосов
/ 19 февраля 2010
str = "0" * 999999
11 голосов
/ 19 февраля 2010

Еще один относительно быстрый вариант -

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)
0 голосов
/ 06 июня 2017
999999999999999999.times{
 print "0"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...