文字列が与えられた場合、文字列内の改行の先頭の文字位置の配列を返す最も効率的な方法は何ですか?
text =<<_
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
culpa qui officia deserunt mollit anim id est laborum.
_
期待される:
find_newlines(text) # => [0, 80, 155, 233, 313, 393]
私自身の回答を投稿します。受け入れられた答えとして最速の方法を受け入れたいと思います。
ここのベンチマーク結果は、新しい回答が追加されると更新されます
require "fruity"
compare do
padde1 {find_newlines_padde1(text)}
digitalross1 {find_newlines_digitalross1(text)}
sawa1 {find_newlines1(text)}
sawa2 {find_newlines2(text)}
end
# Running each test 512 times. Test will take about 1 second.
# digitalross1 is faster than sawa2 by 5x ± 0.1
# sawa2 is faster than sawa1 by 21.999999999999996% ± 1.0%
# sawa1 is faster than padde1 by 4.0000000000000036% ± 1.0%