yon*_*ong 5 profiling haskell ghc
我正在尝试使用SCC(设置成本中心)注释来配置我的程序.找出do语句定义的monad运行需要多长时间的最佳方法是什么?(将SCC语句放入do块中是违法的.)换句话说,假设我有:
do
x <- computeStuff
y <- computeStuff
return (x + y)
Run Code Online (Sandbox Code Playgroud)
如何找到两者的总执行时间computeStuff和x + y(而不是Monad的施工时间)?
SCC 可以设置在任何表达式上。(do { ... })是一个有效的表达式。computeStuff和也是如此return (x + y)。这里唯一不是表达式的是x <- computeStuff. 你说你想要总时间,我理解这是指整个 do 块的总时间。但是您可以将 SCC 放置在 do 块内的任何位置;例如,以下内容是完全有效的。
computeStuff :: IO Int
computeStuff = return 0
test = {-# SCC "total" #-} (
do
x <- {-# SCC "x" #-} computeStuff
y <- {-# SCC "y" #-} computeStuff
return $ {-# SCC "x+y" #-} (x + y)
)
Run Code Online (Sandbox Code Playgroud)