2011-10-03 57 views
3

我編了一個Haskell程序與GHC啓用了剖析。GHC /哈斯克爾分析:功能會消耗時間而沒有被

$ ./server + RTS -M6m -p -RTS

我得到這樣一個輪廓:

            individual inherited 
COST CENTRE  MODULE   no. entries %time %alloc %time %alloc 

poke_a4u64  Generator  2859  56436 0.0 0.0  0.4 0.4 
storeParameter Generator  2860   0 0.4 0.4  0.4 0.4 
    ppCurrent  Generator  2866  56436 0.0 0.0  0.0 0.0 
    ppFeedback  Generator  2861  56436 0.0 0.0  0.0 0.0 

看起來storeParameter不會被調用,但消耗的時間和內存。由於storeParameter調用ppCurrent,我猜這個storeParameter被稱爲56436次,就像ppCurrent一樣。爲什麼不顯示?

+1

這將是非常有益的,看看你正在配置的代碼,如果可能的話。 – fuz

回答

0

我發現entries列躺在我自己的代碼:例如main被叫6次

所以我不會太擔心它。

+0

'entries'不是一個函數被調用的次數。這是調用圖節點輸入的次數。兩者不一樣。 –

+0

@JohnL:爲什麼'main'的調用圖節點會被多次輸入?沒有遞歸或任何東西:只是做一個直接的「從命令行讀取參數,打印一些東西到標準輸出,評估一個純函數並將結果保存到磁盤」。 – ivanm

+0

這是我的猜測,但是可能從系統調用返回到'main'重要嗎?如果文檔更徹底,這將是很好的。 –

4

它在GHC分析的錯誤。我不知道解決方法,但Simon M已承諾在下一個版本中進行改進。

+1

您是否有GHC Trac門票的鏈接? – hammar

+0

我不記得是否有Trac票,但我已經與Simon M談過這件事。 – augustss