タグ

2016年5月30日のブックマーク (1件)

  • Ruby の文字列データの複製について - tmtms のメモ

    Ruby で String オブジェクトを複製しても、文字列データは複製されません。 data = "a"*10*1024*1024 system "grep ^VmSize /proc/#$$/status" t1 = Time.now a = [] 100.times do |i| a.push data.dup end t2 = Time.now system "grep ^VmSize /proc/#$$/status" printf "%.6f\n", t2-t1 実際に10MBの文字列を作って、100回dupする前後でプロセスのメモリサイズを比較してみても変わってません。 % ruby hoge.rb VmSize: 56140 kB VmSize: 56140 kB 0.000164 複製後に文字列を変更すると、そこで文字列データも複製されます。 data = "a"*10*

    Ruby の文字列データの複製について - tmtms のメモ
    masutaka26
    masutaka26 2016/05/30
    Object.dup してもメモリは増えないんだ。a[0].object_id != a[1].object_id なのに。だいぶ頑張っているんだな。