@tanakh それだとなおさらで、C++程度の速度にするのに遅い理由を探さなきゃいけないコストがかかる、んですよね?個人的には、理由を探さなくてもC++なんか目じゃないくらい爆速になって欲しいし、そうなったらもっとユーザいっぱい増えますってきっと ^^b
2011-04-11 04:22:38Fortran とどっちが速いんだろう。 RT @a_mute: でも・・・まだ一般的に、C/C++ が最速とされている現状。
2011-04-11 04:23:24@phoenixstarhiro はい。それはもちろんそうですけど、そういう言語は現状C++しかないのではないかと…。理由が分かっても、取り除けないオーバーヘッドがある言語は多いと思います。
2011-04-11 04:23:34@phoenixstarhiro @tanakh 「コードが遅い時、その事実と理由に気づけて、一定時間で直せますか」という質問は厳しい。本当はC++でも難しい。ただ、週末趣味言語だとつい言語のせいにしてしまう。あるいは次の週末までに解決できればいいけどICFPCでは別の話。
2011-04-11 04:24:05@tanakh ただ、GHC に Supercompilation を取り入れた後も既存の test コードが全部動かないといけませんし、GHC の他の最適化機能と連携して満足なコンパイル速度を出せなければならないので、その辺が課題でしょうね。
2011-04-11 04:30:22@tanakh リストの fusion は全然足りない(stream fusion ですらない)ので、そこで威力を発揮するということでしょうね。
2011-04-11 04:33:55@tanakh 一方でhaskellerとしては、プロファイラの使い方を見せたりパフォーマンスに影響を及ぼす悪い例・いい例を広めたりすることで、日曜大工を超えたhaskellerを増やすことができるとおもうのです。言語を信用するのには時間はかかるけど、それを促進することは可能。
2011-04-11 04:34:22@tanakh @melponn リストが本質的に遅いのは知っています.vectorも存在は知っていますがGHC6.12.3では非標準だったので使っていません(標準しばり).unboxはやろうとしましたが実行時エラーがでてうまくできませんでした(これはもちろん自分の責任).
2011-04-11 06:07:27と,それなりに頑張ったつもりですが,もしよろしければhttp://homepage1.nifty.com/herumi/diary/1011.html#10をどうやってHaskellで書いたら綺麗で速いコードになるのか見せていただけますでしょうか.@tanakh @melponn
2011-04-11 06:14:37@tanakh vectorのtutorialが1ミリもわからなかった -- 「listと同じことができます」ならlistとの違いは何だ. performance向上だけ? -- ので何かpointerがあると助かります。
2011-04-11 06:20:34@melponn いや,Haskellでリストが遅いのが問題とは私は書いてません.リストが遅いのはしかたないから書き換え可能な配列を使ったけど,それはmonadになってしまうのでコードが読みにくい上,それでもあんまし速くなかったどうすればいい?と書いたつもりです.
2011-04-11 07:20:20Haskell でパフォーマンスを考えると恐ろしく面倒なコードになってこれ Haskell でやらない方が簡単じゃないのってぐらい酷くなるイメージを勝手に持ってる。
2011-04-11 07:43:21@herumi あ、いえ、そこは単に一般的にそう感じる人が多いのかなーと思っただけです>Haskellでリストが遅い。モナドが読みにくいのは、慣れ・・・てもやっぱりCの方が読みやすい気もしますがその辺ははすけらーさんがどう考えてるか自分も気になります
2011-04-11 08:33:19というか,Project Euler 250の最初のコード(Data.Array版)はリスト使ってないし,そこまで「酷い」と言われるコードでも無い気もする."foldl'でstrict評価してるのになんでメモリが足りなくなるのだろう"の理由はぜひ知りたい.
2011-04-11 09:25:46@herumi m が大きいときにメモリを食っているのは num = listArray (0,m-1).take m $ 1 : [0,0..] だと想像していますが、 profile とってないのでよくわかりません、時間がとれたらやりたいことです
2011-04-11 09:46:03