トップページ > プログラム > 2020年05月23日 > x0bVPHOi0

書き込み順位&時間帯一覧

5 位/111 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000100000020003



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん (ワッチョイ 275f-8Kp1)
Ruby 初心者スレッド Part 66

書き込みレス一覧

Ruby 初心者スレッド Part 66
531 :デフォルトの名無しさん (ワッチョイ 275f-8Kp1)[sage]:2020/05/23(土) 13:15:32.65 ID:x0bVPHOi0
StringにはcapacityあるけどArrayのrubyインタフェースには見つからんな
C言語側ではrb_array_new2がそれっぽいが
まぁ、どうしてもそれっぽいことやりたいならArray#[]=でも拡張できるのでnew時にサイズ指定ですね。

あとはpushよりも<<の方が速かったり、
そもそも要素数が先に知る事ができるのならばArray.newにブロック渡したり
flat_map使ったり…
Ruby 初心者スレッド Part 66
535 :デフォルトの名無しさん (ワッチョイ 275f-8Kp1)[sage]:2020/05/23(土) 20:20:01.68 ID:x0bVPHOi0
>>534
# gem install benchmark_driver
require 'benchmark_driver'

Benchmark.driver do |x|
x.prelude %{ input = (1..2_000_000).to_a.shuffle
RUBY
x.report 'push without size', %{o = []; input.each{|x| o.push x }}
x.report '[]= with size (each_with_index)', %{o = Array.new(input.size); input.each_with_index{|x,ix| o[ix] = x }}
x.report '[]= with size (each)', %{o = Array.new(input.size); i=0; input.each{|x| o[i] = x;i+=1 }}
x.report 'block with size', %{o = Array.new(input.size){|x| input[x] }}
end
Ruby 初心者スレッド Part 66
536 :デフォルトの名無しさん (ワッチョイ 275f-8Kp1)[sage]:2020/05/23(土) 20:21:25.63 ID:x0bVPHOi0
prelude書き換えてる最中に送信してしまった
x.prelude %{ input = (1..2_000_000).to_a.shuffle }


Comparison:
block with size: 12.0 i/s
[]= with size (each): 9.7 i/s - 1.23x slower
push without size: 8.9 i/s - 1.35x slower
[]= with size (each_with_index): 7.6 i/s - 1.58x slower


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。