【问题标题】:Measuring C execution time, memory usage and cpu load for a program测量程序的 C 执行时间、内存使用和 CPU 负载
【发布时间】:2013-04-10 14:24:39
【问题描述】:

对于特定的c代码程序,我想测量一下:

execution time (most likely complete program execution time)
memory usage
CPU load

如何在 C 中获取以上所有信息?

【问题讨论】:

  • 答案可能会因环境而异。例如,您可以添加一个标记来指示感兴趣的操作系统(例如,windows、linux、osx 等)
  • 如果它是基于 UNIX 系统中的命令行工具,您可以使用 time 来测量执行时间。在 C 语言中,我个人在代码块之前和之后使用 gettimeofday()。
  • 如果您在自己的程序中寻找瓶颈,我建议使用分析器。
  • 平台是 unix.. 但我也想了解 windows

标签: c execution-time


【解决方案1】:

您可以编写一个简单的代码来测量特定代码块的执行时间,使用标准 C 库进行时间/日期操作 (time.h):http://en.wikipedia.org/wiki/C_date_and_time_functions

对于一个重要的程序,实际上不可能准确测量内存使用情况。您的程序是否使用共享库?那么,您是否将共享库使用的内存计算为仅属于您的程序?你的程序 fork() 生成的子进程呢?您是单独计算它们还是与主要过程一起计算它们?所有这些问题都可以回答,但这意味着您衡量的内容取决于您的具体选择。

在 C 中,你可以做的是包装 malloc() 和 free() 使用你的包装器来跟踪你的内存分配。

对于 CPU 负载,您需要与操作系统交互。你不能从 C 那里得到这些信息。

【讨论】:

    猜你喜欢
    • 2010-09-23
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 2012-04-20
    • 1970-01-01
    • 2023-03-03
    相关资源
    最近更新 更多