haskell-ja > Archives > 2011/09/01

2011/09/01 22:49:10 UTCcutsea110
#
うーん。
#
ubuntu 11.04(64bit)でWord8を使ったらCharよりはっきり良くなった。
#
ubuntu 10.10(32bit)ではCharのがWord8よりよい。
#
良いってのはProductivityもメモリ使用量の点で。
#
ただ64bitの方で気になるのはVectorを使ったときに、consしてspanした時とsnocしてspanした時とでどうも挙動が予想外に悪くなるのがなぁ。
#
結果として64bit環境でWord8を使い、snocしてspanしたのが64bitで最高のパフォーマンスを発揮してくれてる(現時点では)。
#
これは全部理屈通りなんだけど、32bit環境でWord8とCharの差が想定外なのと64bit環境でCharを使った場合にsnocの方が劇的に悪くなるのは不思議だ。
#
snocの方を使ったときに良くなるのはあくまで今扱ってるデータの特性による。
#
Charは性能が読みにくいってだけなら別にいいんだけど。
#
Word8+snoc : 13M in use, 95%Productivity
#
Word8+cons : 19M in use, 94%Productivity
#
Char+snoc : 13M in use, 97%Productivity
#
Char+cons : 17M in use, 94%Productivity
#
あれ???
#
ずっとChar+snocは30M in useだったのになんなんだ??
#
これなら結構傾向まともだ。
#
でも一番良いのはCHar+snoc版だけど。
#
とりあえず32bitでも64bitでもCharの方がWord8より良い結果という謎の状況です。
#
というわけで一番最初の「ubuntu 11.04(64bit)でWord8を使ったらCharよりはっきり良くなった。」は今は嘘。なんでだか解らないけど、以前の状況の方が不可解だったからまぁ忘れることにするか。
#
32bitでも64bitでもChar+snocが良い結果になったのでコードとしてはこれでOKかな。
#
Word8の方が良くなるってのは状況次第なんだろうか。
#
いずれにせよこれはもう追うのやめて次のパフォーマンスチューニングはいよいよshow系だな。