2012-04-26 4 views
19

にタイミングを取得し、私が代わりにコンパイルするので、時間を取得するには、コンソール(REPL)で私は比較的遅い手順(適切遅いという名前を)持ってGHCiの

time $ slow [1,2,3,4,5] 

ような何かをしたいと思いますプログラムを実行してから実行してください。

これはできますか?

+3

ghciで? ':set + s'は、評価されたすべての式のタイミングと割り当ての統計を取得します。必要に応じて、 'System.CPUTime.getCPUTime'を使って自分で' time'を書くことができます。 –

+1

対話型プログラムでは、コンパイルされたパフォーマンスに関する正確な情報は得られません。 – rotskoff

+5

あなたは 'time runhaskell foo.hs'とそのより正直な' ghc foo.hs -O2 && time/foo'が好きかもしれません。 –

答えて

35

GHCiに:set +sと入力すると、タイミングとメモリ情報がすべての式の評価後に出力されます。

例:でも通訳に評価されるように、これは最適化せずに、発現のタイミングとなりますので、それは必ずしも物事が取るどのくらいの正確な測定ができません、またはこと

Prelude> :set +s 
Prelude> sum [1..2^20] 
549756338176 
it :: (Num a, Enum a) => a 
(0.34 secs, 169,197,008 bytes) 

注意実際にコンパイルされたコードでは、同じコードの2つのバージョンのどちらが高速になります。そのためには、criterionベンチマークライブラリをご覧ください。