2010-07-20
*1279585816*海の哺乳類展に行ってきた
f:id:nishiohirokazu:20100719124244j:image
イッカク!これは1本だけある歯だそうな。超出っ歯。
*1279595270*続:Haskellのfibが遅い件
とても勉強になる流れなのでとりあえずざっくりとまとめる
-- Haskellの有名なfibの定義は素朴なループでの定義に比べて格段に遅く、O(n^2.6)くらいの実行時間がかかり、N = 100000でPythonにすら負ける
-- Integerの足し算のコストとかも絡んでくるのでややこしいという話など
-- fibを先頭から順に使って行った場合(例:sum (take 300000 fib))の方が、fib !! 300000よりずっと速いという話
-- 僕の書いた早いバージョンのfibは正格性が(コード上には明記されていないが)コンパイラによって推論されているという話
-- 巨大なリストから要素1つだけを取り出す時と2つ以上取り出すときではかかる時間や消費メモリがぜんぜん違うという話
-- 正格評価するzipWith'を作ればよい、という話など
-- 空間計算量が一時的に影響与えたと考えるのが自然、という話
-- 「2.77618e-13*x^2.55 の方が 2.10854e-10*x^2 よりどう見てもマッチしてるな。特異的って感じもないと思う。」空間計算量が一時的に影響与えたのではないのではないか、という話
-- 環境依存の可能性が高いという話、GCやメモリアロケータのせいでO(n)に見える処理に実際にはそれ以上に掛かるケースがある話(Rubyで過去にあった例)、など