夜中からの Haskell 談義

Haskell 遅いんじゃないかって言ったら @tanakh 先生に教育的指導をして頂けました
26
前へ 1 2 3 ・・ 6 次へ
Hideyuki Tanaka @tanakh

@shelarcy なるほどー。これは期待ですね。

2011-04-11 04:21:46
ぷりん大王・鰹節大臣(兼任) @phoenixstarhiro

@tanakh それだとなおさらで、C++程度の速度にするのに遅い理由を探さなきゃいけないコストがかかる、んですよね?個人的には、理由を探さなくてもC++なんか目じゃないくらい爆速になって欲しいし、そうなったらもっとユーザいっぱい増えますってきっと ^^b

2011-04-11 04:22:38
普通のC++使い、銀天すばる @SubaruG

Fortran とどっちが速いんだろう。 RT @a_mute: でも・・・まだ一般的に、C/C++ が最速とされている現状。

2011-04-11 04:23:24
Hideyuki Tanaka @tanakh

@phoenixstarhiro はい。それはもちろんそうですけど、そういう言語は現状C++しかないのではないかと…。理由が分かっても、取り除けないオーバーヘッドがある言語は多いと思います。

2011-04-11 04:23:34
Yu SUGAWARA @gusmachine

@phoenixstarhiro @tanakh 「コードが遅い時、その事実と理由に気づけて、一定時間で直せますか」という質問は厳しい。本当はC++でも難しい。ただ、週末趣味言語だとつい言語のせいにしてしまう。あるいは次の週末までに解決できればいいけどICFPCでは別の話。

2011-04-11 04:24:05
くいなちゃん @b2

Fortranか・・・Fortran2003 でも触ってみようかな

2011-04-11 04:27:19
Hideyuki Tanaka @tanakh

@gusmachine まあたしかにそれもそうですね…

2011-04-11 04:28:27
Hideyuki Tanaka @tanakh

とりあえずベンチだけ見たけど、平均でGHCの35%高速化はなかなかすごいのではないか?

2011-04-11 04:29:03
Hideyuki Tanaka @tanakh

主にリストとか使ってそうなプログラムが早くなっとる印象だ。

2011-04-11 04:29:35
shelarcy(しぇらーしぃ) @shelarcy

@tanakh ただ、GHC に Supercompilation を取り入れた後も既存の test コードが全部動かないといけませんし、GHC の他の最適化機能と連携して満足なコンパイル速度を出せなければならないので、その辺が課題でしょうね。

2011-04-11 04:30:22
Hideyuki Tanaka @tanakh

@shelarcy うーん、そうですねえ。道のりは長そうですけど、頑張って欲しいです。

2011-04-11 04:30:51
shelarcy(しぇらーしぃ) @shelarcy

@tanakh リストの fusion は全然足りない(stream fusion ですらない)ので、そこで威力を発揮するということでしょうね。

2011-04-11 04:33:55
Yu SUGAWARA @gusmachine

@tanakh 一方でhaskellerとしては、プロファイラの使い方を見せたりパフォーマンスに影響を及ぼす悪い例・いい例を広めたりすることで、日曜大工を超えたhaskellerを増やすことができるとおもうのです。言語を信用するのには時間はかかるけど、それを促進することは可能。

2011-04-11 04:34:22
Hideyuki Tanaka @tanakh

@shelarcy そうですね。適当に書いたリストのコードが早くなってくれたらすごく嬉しいです。

2011-04-11 04:34:51
Hideyuki Tanaka @tanakh

@gusmachine なるほど。たしかにその辺重要ですね。

2011-04-11 04:35:17
herumi @herumi

@tanakh @melponn リストが本質的に遅いのは知っています.vectorも存在は知っていますがGHC6.12.3では非標準だったので使っていません(標準しばり).unboxはやろうとしましたが実行時エラーがでてうまくできませんでした(これはもちろん自分の責任).

2011-04-11 06:07:27
herumi @herumi

と,それなりに頑張ったつもりですが,もしよろしければhttp://homepage1.nifty.com/herumi/diary/1011.html#10をどうやってHaskellで書いたら綺麗で速いコードになるのか見せていただけますでしょうか.@tanakh @melponn

2011-04-11 06:14:37
Yu SUGAWARA @gusmachine

@tanakh vectorのtutorialが1ミリもわからなかった -- 「listと同じことができます」ならlistとの違いは何だ. performance向上だけ? -- ので何かpointerがあると助かります。

2011-04-11 06:20:34
Yu SUGAWARA @gusmachine

@nushio_hentai @tanakh 将来的に標準listがこちらに置き換わるのかな。

2011-04-11 06:23:47
Yu SUGAWARA @gusmachine

listがvectorに(あるいはvectorがlistに)なるなら、他のArrayとかも変わるのかな。

2011-04-11 06:36:53
herumi @herumi

@melponn いや,Haskellでリストが遅いのが問題とは私は書いてません.リストが遅いのはしかたないから書き換え可能な配列を使ったけど,それはmonadになってしまうのでコードが読みにくい上,それでもあんまし速くなかったどうすればいい?と書いたつもりです.

2011-04-11 07:20:20
🎀にゃおきゃっと🐈Nyaocat🎀 @nyaocat

Haskell でパフォーマンスを考えると恐ろしく面倒なコードになってこれ Haskell でやらない方が簡単じゃないのってぐらい酷くなるイメージを勝手に持ってる。

2011-04-11 07:43:21
めるぽん.c @melponn

@herumi あ、いえ、そこは単に一般的にそう感じる人が多いのかなーと思っただけです>Haskellでリストが遅い。モナドが読みにくいのは、慣れ・・・てもやっぱりCの方が読みやすい気もしますがその辺ははすけらーさんがどう考えてるか自分も気になります

2011-04-11 08:33:19
herumi @herumi

というか,Project Euler 250の最初のコード(Data.Array版)はリスト使ってないし,そこまで「酷い」と言われるコードでも無い気もする."foldl'でstrict評価してるのになんでメモリが足りなくなるのだろう"の理由はぜひ知りたい.

2011-04-11 09:25:46
Ikegami Daisuke @ikegami__

@herumi m が大きいときにメモリを食っているのは num = listArray (0,m-1).take m $ 1 : [0,0..] だと想像していますが、 profile とってないのでよくわかりません、時間がとれたらやりたいことです

2011-04-11 09:46:03
前へ 1 2 3 ・・ 6 次へ