如何使用大量的System.Process.read进程分析Haskell程序?

时间:2014-05-31 10:07:42

标签: haskell profiling

我有一个多线程的Haskell程序,它使用System.Process.readProcess调用外部程序,并且经常这样做。我该如何衡量绩效? (决定我是否应该改进我的程序,或者是外部程序。)"外部时间"显示在配置文件(+ RTS -p)或事件日志(threadscope图片)?

2 个答案:

答案 0 :(得分:0)

您可以使用ProcMon执行此任务。

在您的流程名称上添加过滤器,仅选择'显示流程和主题活动'你可以确切地看到哪个更耗时。您甚至可以保存和解析日志以进行长时间监控。

我还建议你使用另一种方法解决这个问题:

  1. 子进程
    1. 在main上创建一个循环并等待外部事件(套接字,管道等)
    2. 处理请求并发送结果
    3. 阻止直到下一个请求。
  2. 主要流程:
    1. 产生一个或多个子进程
    2. 将请求发送给可用的孩子
    3. 等待回复
  3. 这样你就可以摆脱不断产生/杀死子进程所浪费的开销。

答案 1 :(得分:0)

您是否考虑过使用Criterion,一个Haskell微基准测试库?

  

此库提供了一种强大而简单的方法来衡量软件性能。它既提供了执行和分析基准测试的框架,也提供了一组驱动程序功能,可以轻松构建和运行基准测试,并分析其结果。