4

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"
4

2 回答 2

2

我已经更新了该软件包以与 GHC 7 系列一起使用。

这是关于 -cafe 的问题的结果

在此处输入图像描述

于 2012-12-01T18:25:21.530 回答
1

ghc-gc-tune.hs [1] 的第 485 行读取

Right str     -> return $! Just $! parse (unlines . drop 1 . lines $ str)

这似乎正在修剪你的 GC 信息转储的开始,这不是有效的 Haskell 列表语法 - 三个选项按简单→硬顺序排列:

  1. 让您的代码在启动时向 stderr 打印一个换行符(快速破解)

    main = hPutStrLn stderr "" >> do ...   -- untested...
    
  2. 修补 ghc-gc-tune.hs 以阻止它丢弃 1 行 stderr

    Right str     -> return $! Just $! parse str   -- untested...
    
  3. 修补 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

于 2012-10-13T17:51:01.247 回答