ToDo:
#GC::Profiler.enable a = Array.new(1000000){'a'}; puts 'array nilled'; a = nil; #a.clear GC.start; count = 0; ObjectSpace.each_object{count += 1}; IO.popen('free'){|p| puts count, p.read} #GC::Profiler.report
via http://redmine.ruby-lang.org/issues/show/649#note-8
i@uco ~/src/ruby-1.9.1-p0> ./miniruby_orig leak2.rb array nilled 1628 total used free shared buffers cached Mem: 516296 446072 70224 0 10128 262248 -/+ buffers/cache: 173696 342600 Swap: 0 0 0 i@uco ~/src/ruby-1.9.1-p0> ./miniruby_new leak2.rb array nilled 1627 total used free shared buffers cached Mem: 516296 446336 69960 0 10144 262248 -/+ buffers/cache: 173944 342352 Swap: 0 0 0
1000000 の方は普通に漏れてないし。 でもなんか 1 object 減ってるなぁと調べてみると 'array niled' って文字列の方だった。
そして x86-64 だとむしろ miniruby_new で 1000000 オブジェクトの方が漏れるぞ論外だ… まぁ x86-64 でだめなのはまぁありそうな話だけど。
もちょいたくさんベンチできるテストケースが欲しいなぁ。
(08:02)
even 957 命令。
a 65 ai 1 and 33 cntb 160 sumb 80 ori 8 selb 165 xor 440 nop 5
odd 882 命令。
rotqbyi 70 stqr 160 lqr 167 hbrr 1 brnz 1 rotqbii 198 lnop 28 shufb 40 stqd 71 lqd 86 shlqbii 60
で結果は、 126.628 倍。
ORIGNAL: sum=3c927c56, 292970508 ticks MINE: sum=3c927c56, 2313630 ticks
うーんこれは狂ってるなー。 よくこれで優勝したなぁ。 コンパイラが吐いてるコードをちらちら見ると どう見ても最適とは言いがたい。
まぁそれより even/odd のバランスが悪いし nop も残ってるし。 even 957 命令に律速されてるとすると、 nop/lnop 削って even/odd にバランス良く振るだけで 903命令134倍とかになる。 まぁそこまで理想的にいかんとしても、 どう見ても不要な命令の削除だの、 レジスタに状態を置くだのすればもっといくわけで、 少なくとも 135 くらいは行けてたんじゃないかなぁ。
kodera さんの方は、二重ループになってて計算しずらいので、 結果から逆算すると、 1007.6 命令らしい。
120.705 倍。てか ORIGINAL の方も変わるのね。
ORIGNAL: sum=3c927c56, 294032967 ticks MINE: sum=3c927c56, 2435961 ticks
僕は 1270 命令らしい。
http://shinh.skr.jp/m/?date=20090307#p08
ORIGNAL: sum=3c927c56, 293506387 ticks MINE: sum=3c927c56, 2973408 ticks
(10:18)
http://codereview.chromium.org/99143/diff/8054/7059
http://twitter.com/niha28/status/1818969913
この diff が欲しいですよねえという
(10:27)
http://hujita.sakura.ne.jp/log/eid225.html
何度も聞いたのに歌詞がさっぱりわからんと思ってたら、 そうとう意味不明な歌詞だったんだなぁ。
(12:32)
前 | 2009年 5月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。