haskell-ja > Archives > 2011/09/14

2011/09/14 01:25:51 UTCmaoe
#
面白そうなので計測してみよう
#
すべて空白だとreverseは不利じゃないかなあ
2011/09/14 01:31:07 UTCmaoe
#
ところでこの関数chopというよりはrstripという名前がいい気がする
2011/09/14 01:32:53 UTCnobsun@twitter
#
dropWhileが重くなる分、2回目のreverseが軽くなるので、思っているほど不利にはならないと思う。
2011/09/14 01:35:39 UTCmaoe
#
計測できた
#
gistにまとめよう
2011/09/14 01:51:35 UTCmaoe
#
こういう場合のprogressionの使い方がよくわからないのでcriterionをそのまま使いました。 https://gist.github.com/1215660
#
空白なしだとreverse圧勝、空白だけだとfoldrが速いですね.
#
要素数を減らすとまた傾向が変わります
#
ついでにCPS変換してfoldlを使うものものせてあります
2011/09/14 02:04:51 UTCnobsun@twitter
#
結論はどう読めばいいのでしょうか
#
foldr版で go の分岐の書きかたでどのくらい違いがでますか?
2011/09/14 02:10:52 UTCnobsun@twitter
#
条件分岐がネックなんだやっぱり。空白ばかりだとdropWhileが重くなる分をreverseが軽くなることでは吸収できないんだなぁ。
2011/09/14 02:11:43 UTCmaoe
#
分岐の書き方はnullをつかうのでしたっけ?
#
nullで計測中
2011/09/14 02:14:51 UTCnobsun@twitter
#
isSpace を先につかった方がすこし稼げるかもしれません。が、その辺もふくめて書きかたのちがいでどの程度差がでるかなと。。。
2011/09/14 02:15:41 UTCmaoe
#
3通りで計測中です。isSpaceを前に持ってこないと変わらなそうな気がしますね。Coreを見てみないとわかりませんが。
2011/09/14 02:17:42 UTCnobsun@twitter
#
nullよりパターンマッチの方が速いかも(計測せず憶測でものいってます :p)
2011/09/14 02:19:24 UTCmaoe
#
isSpaceを前に持ってきた方が速く28msec -> 23msec、nullとパターンマッチは変化なしでした。
2011/09/14 02:21:43 UTCkazu
#
ifdef で区切るんですよ。 > progression
2011/09/14 02:22:49 UTCmaoe
#
一度の実行で、各benchを比較する方法があるといいなあと思ったのです。> progression
#
Coreを見たらnullもパターンマッチも同じコードでした
#
UnfoldingDoneにnullって出ているのでインライン化されているようです
2011/09/14 02:29:25 UTCnobsun@twitter
#
なるほど。
2011/09/14 02:37:27 UTCkazu
#
末尾にちょこっとだけスペースがある文字列に対して実験するとどうなりますか?
2011/09/14 02:53:39 UTCmaoe
#
cairoのassertionに失敗してcriterionがこける。。。計測中PCがまともに使えないのがあれなので、追加計測はまたあとでにします。すみません。さっきのgistに最新のコードを貼り付けておきました。
2011/09/14 02:53:58 UTCkazu
#
haskell-cafe でも聞いてみます。
2011/09/14 03:22:23 UTCmaoe
#
isSpaceを前に持ってきたfoldrが一番速いかも
#
先ほどこけた計測ではfoldrは通過してて、これはダントツに速い
#
ただし入力によりそうだよなあ
#
再計測してみよう。
2011/09/14 03:29:48 UTCmaoe
#
こけるのでグラフはありませんが、結果です。 https://gist.github.com/1215660#file_output.txt
#
foldr + isSpace前がreverseより速い。reverse版でdropWhileの及ばない末尾以外のところで空白が多いと遅くなりそうだな。
#
つづきはまた後で.
2011/09/14 04:19:53 UTCma0e@twitter
#
@nobsun @kazu_yamamoto 新しい結果貼っておきました。 http://t.co/feJcCdT