history

青木日記 RSS

<前の日 | この月 | 次の日>

2005-12-31

cvs, svn, svk

CVS と Subversion と svk が混じってるとどれを打てばいいのやら混乱してくる。 CVS/ とか .svn があるかどうか見て自動判別するようなラッパーを書くべきか。 しかしコマンドが少し違うから最終的には使い分けなきゃいかんのだよなあ。

(16:48)

ふつうの H: cat -n

やべ、気軽に printf を使ってしまったが GHC 6.2 には printf がなかった。 6.2 と 6.4って意外と違うんだなあ。

Ruby のマイナーバージョンほどじゃないけどね。

(17:12)

struct st_table_entry の割り当て

struct st_table_entry はいまのところ malloc で普通に割り当ててる。 これをある程度まとまった単位で malloc するようにしたら速くなるんじゃないかと思ってやってみた。

結果

~/c/ruby % ./ruby.normal ../yarv/st-benchmark.rb 1000000
                      user     system      total        real
empty             0.110000   0.000000   0.110000 (  0.376736)
ivar              0.500000   0.000000   0.500000 (  0.508973)
hash/addrm        0.790000   0.000000   0.790000 (  0.794872)
hash/add          0.080000   0.010000   0.090000 (  0.082135)
 
~/c/ruby % ./ruby.mempool ../yarv/st-benchmark.rb 1000000
                      user     system      total        real
empty             0.130000   0.000000   0.130000 (  0.133526)
ivar              0.500000   0.000000   0.500000 (  0.508887)
hash/addrm        0.760000   0.000000   0.760000 (  0.768688)
hash/add          0.070000   0.000000   0.070000 (  0.077429)

差が出ない。Hash の要素を追加してはすぐ削除する hash/addrm あたり、 もうちょっと差がつくかと思ったけどぜんぜん効果なし。 空ループが遅くなっているのも気になる。

なぜか知らないが、YARV のほうがまだ効果が大きい (とある事情によりベンチマークは別コード)。

~/c/yarv % ./miniruby.normal st-benchmark.rb 1000000
                      user     system      total        real
empty             0.230000   0.000000   0.230000 (  0.234428)
ivar              0.510000   0.000000   0.510000 (  0.510785)
hash/addrm        0.690000   0.000000   0.690000 (  0.699603)
hash/add          0.720000   0.030000   0.750000 (  0.755435)
 
~/c/yarv % ./miniruby.mempool st-benchmark.rb 1000000
                      user     system      total        real
empty             0.230000   0.000000   0.230000 (  0.233647)
ivar              0.470000   0.000000   0.470000 (  0.479570)
hash/addrm        0.610000   0.000000   0.610000 (  0.617374)
hash/add          0.610000   0.030000   0.640000 (  0.646592)

かなり有利と思われる操作ばっかりやってこの差では、あんまり意味ないな。

(04:50)

st_table_entry の割り当て (2)

しかも SEGV

(04:50)

名前
メールアドレス

<前の日 | この月 | 次の日>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|09|10|
2009|07|
2010|09|

Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved. LIRS