ghc-gc-tune 0.2.1是否适用于ghc 7.4.1?似乎ghc-gc-tune已经有一段时间没有更新了,可能只适用于ghc 6.x?我找不到任何关于此的可靠信息。
我收到以下错误:
ghc-gc-tune: Can't parse GC stats: " ,(\"num_GCs\", \"320602\")\n ,(\"average_bytes_used\", \"105444\")\n ,(\"max_bytes_used\", \"131296\")\n ,(\"num_byte_usage_samples\", \"1677\")\n ,(\"peak_megabytes_allocated\", \"2\")\n ,(\"init_cpu_seconds\", \"0.00\")\n ,(\"init_wall_seconds\", \"0.00\")\n ,(\"mutator_cpu_seconds\", \"6.24\")\n ,(\"mutator_wall_seconds\", \"6.23\")\n ,(\"GC_cpu_seconds\", \"3.57\")\n ,(\"GC_wall_seconds\", \"3.58\")\n ]\n"
答案 0 :(得分:2)
答案 1 :(得分:1)
ghc-gc-tune.hs [1]的485行读取
Right str -> return $! Just $! parse (unlines . drop 1 . lines $ str)
这似乎正在削减你的GC infodump的开始,这是无效的Haskell列表语法 - 简单→硬顺序中的三个选项:
让你的代码在stderr启动时打印一个换行符(快速破解)
main = hPutStrLn stderr "" >> do ... -- untested...
修补ghc-gc-tune.hs以阻止它掉落1行stderr
Right str -> return $! Just $! parse str -- untested...
修补ghc-gc-tune.hs以尝试当前的方式,然后不丢弃1行,选择最有效的方法
-- code left as an exercise
-- bonus points if it's submitted upstream as a patch
可能早期版本的GHC在stderr上输出一个额外的标题,尝试类似:
./ghc-compiled-test-program +RTS -t --machine-readable -RTS
检查输出。
[1] http://code.haskell.org/~dons/code/ghc-gc-tune/ghc-gc-tune.hs