gpt4 book ai didi

haskell - 使用标准分析可执行文件

转载 作者:行者123 更新时间:2023-12-02 11:25:19 25 4
gpt4 key购买 nike

我需要分析大量的 haskell 可执行文件,希望是并行的。我能够通过 measure 获得时钟时间和 measTime从 Criterion 库中获取,但无法使 measCpuTime 或任何 GC 报告发挥作用(measCpuTime 返回一个短得不可思议的时间)。代码如下:

buildProj :: FilePath -> IO ExitCode
buildProj projDir = system $ "cd " ++ projDir ++ "; cabal sandbox init; cabal configure; cabal build"

-- Time a project
instance NFData ExitCode
where
rnf ExitSuccess = ()
rnf (ExitFailure _) = ()


benchmark :: FilePath -> Int64 -> IO Double
benchmark projDir runs = do
let runProj = "./" ++ projDir ++ "/dist/build/" ++ projDir ++ "/" ++ projDir ++ "> /dev/null"
exit <- timeout 17000000 $ system runProj -- TODO hardcode timeout
case exit of
Just ExitSuccess -> do {(m, _) <- measure (nfIO $ system runProj) runs;
return $! measTime m}
Just (ExitFailure _) -> return 100
Nothing -> return 100

简而言之,我使用 System.Process.system 作为 IO 操作来运行可执行文件,并将 ExitCode 声明为 NFData 以获得 nfIO上类。我做错了什么?有更好的工具来完成任务吗?

文件的 here如果你想玩它。

最佳答案

我看了一下this所以问题并得到了一些想法。首先请注意,criterion 使用 cbits启用系统相关的 cpu 时间功能。让我们假设你在unix 上。最简单的方法是在运行开始和结束时直接读取 /proc/PID/stat/cutime 并获取差异。除此之外,您实际上可以使用该问题中提供的 c 代码,将其作为外部导入链接到您自己中,然后直接从您自己的代码中调用它。

关于haskell - 使用标准分析可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33083527/

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