development

루비에서 긴 반복 텍스트 문자열을 어떻게 생성합니까?

big-blog 2020. 7. 1. 07:37
반응형

루비에서 긴 반복 텍스트 문자열을 어떻게 생성합니까?


루비에서 긴 문자열을 빠르게 생성하는 가장 좋은 방법은 무엇입니까? 이것은 작동하지만 매우 느립니다.

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 = "0" * 999999

비교적 빠른 또 다른 옵션은

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)

999999999999999999.times{
 print "0"
}

참고 URL : https://stackoverflow.com/questions/2296994/in-ruby-how-do-i-generate-a-long-string-of-repeated-text

반응형