[過去ログ]
関数型プログラミング言語Haskell Part7 (1001レス)
関数型プログラミング言語Haskell Part7 http://echo.5ch.net/test/read.cgi/tech/1174211797/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
888: デフォルトの名無しさん [sage] 2007/09/21(金) 13:12:52 >>886 total allocは確保したメモリの総量だから、空間効率を計るのには使えない。 +RTS -sstderrをつけてmaximum residencyを見ればO(n)になってるのが分かると思う。 http://echo.5ch.net/test/read.cgi/tech/1174211797/888
890: デフォルトの名無しさん [sage] 2007/09/21(金) 13:18:28 >>888 >total allocは確保したメモリの総量だから 補足。確保->回収->確保で多重に計上されるってことね。 maximum residencyは瞬間的な使用中のデータ量の最大値(を実測で近似したもの)。 http://echo.5ch.net/test/read.cgi/tech/1174211797/890
891: 886 [sage] 2007/09/21(金) 14:04:46 >>888 >>890 なるほど。 HaskellのGCって、いらなくなった瞬間に動くものだったんだな。 もっとメモリが足りなくなってから動くものだと思ってた。 (そういう扱いをする部分(世代?)もあると思うけど) というかそれ以前に、885で >逆順にソートされたリストが渡される最悪のケースでO(n^2)になる。 って書いてあるのになにも分かってなかった。 あと885は qsort [] = [] qsort (x:xs) = let !elts_lt_x = [y | y <- xs, y < x] in let !elts_greq_x = [y | y <- xs, y >= x] in qsort elts_lt_x ++ [x] ++ qsort elts_greq_x と書くといいかなと思ったり。 http://echo.5ch.net/test/read.cgi/tech/1174211797/891
904: 886 [sage] 2007/09/21(金) 23:41:03 >>895 -prof付きでコンパイルしてから+RTS -p付きで実行するとプロファイルがとれて、 Fri Sep 21 23:19 2007 Time and Allocation Profiling Report (Final) main.exe +RTS -p -RTS total time = 0.05 secs (1 ticks @ 50 ms) total alloc = 9,079,028 bytes (excludes profiling overheads) COST CENTRE MODULE %time %alloc main Main 100.0 0.3 qsort Main 0.0 99.1 というようなログが出力される。 total allocとか%allocはこれのこと。 total allocはアロケートされたメモリの累計で、%allocは各関数ごとの割合。 とまあそういうことなんだけど、ここでの議論は、GCでメモリが再利用されて O(n)になるという話なので、無意味と言うか、的外れと言うか、 >>886-887は無かったことにしてください。 メモリ使用量を正しく知る方法は>>888。 http://echo.5ch.net/test/read.cgi/tech/1174211797/904
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.043s