gpt4 book ai didi

haskell 分析显示 "total time = 0.00 secs",但这不是真的

转载 作者:行者123 更新时间:2023-12-02 16:07:58 24 4
gpt4 key购买 nike

我正在尝试分析我的程序。

我是这样编译的:

ghc -rtsopts -O3 -prof -auto-all Main.hs

然后运行:

./Main +RTS -p

并阅读Main.prof:

Fri Jul 15 13:06 2011 Time and Allocation Profiling Report  (Final)

Main +RTS -p -RTS

total time = 0.00 secs (0 ticks @ 20 ms)
total alloc = 266,726,496 bytes (excludes profiling overheads)

COST CENTRE MODULE %time %alloc

trySub Main 0.0 14.3
ourPalindroms Main 0.0 15.0
isPalindromic Main 0.0 70.7


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

MAIN MAIN 1 0 0.0 0.0 0.0 100.0
CAF Main 240 10 0.0 0.0 0.0 100.0
asSquareSum Main 253 0 0.0 0.0 0.0 0.0
squares Main 252 2 0.0 0.1 0.0 0.1
maxN Main 248 1 0.0 0.0 0.0 0.0
ourPalindroms Main 247 1 0.0 15.0 0.0 85.7
isPalindromic Main 249 1000000 0.0 70.7 0.0 70.7
main Main 246 1 0.0 0.0 0.0 14.3
asSquareSum Main 250 1998 0.0 0.0 0.0 14.3
trySub Main 251 1998 0.0 14.3 0.0 14.3
CAF GHC.IO.Handle.FD 176 2 0.0 0.0 0.0 0.0
CAF GHC.IO.Encoding.Iconv 137 2 0.0 0.0 0.0 0.0
CAF GHC.Conc.Signal 130 1 0.0 0.0 0.0 0.0

我的程序如此惊人的速度实际上是一个谎言:

[.../P125]$ time ./Main +RTS -p
...output...

real 0m4.995s
user 0m4.977s
sys 0m0.010s

(是的,我尝试过在有时间的情况下运行,但探查器一直在撒谎)

我能做什么?

[.../P125]$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.0.3

操作系统 Mac OS X 10.6.8。我很确定我已经从自制程序安装了 ghc

最佳答案

简短回答:解决方法是使用 -threaded 进行编译。

对于过度感兴趣的灵魂的详细信息:原因是 GHC bug(请参阅 #5282 ):当运行时系统想要执行垃圾收集时,分析计时器总是会被触发。由于此时执行不在 Haskell 代码中,因此成本归因于“SYSTEM”成本中心 - 然后从分析 View 中删除。

-threaded 解决该问题的原因可能是它使分析计时器以“实时”时间而不是进程实际执行的时间计时。尽管这是一种不太准确的分析形式,但它似乎将计时器与程序的执行充分分离,从而不会触发错误。

关于haskell 分析显示 "total time = 0.00 secs",但这不是真的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6704873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com