首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在linux下测量C程​​序缓存命中/未命中和CPU时间的最简单工具?

在linux下测量C程​​序缓存命中/未命中和CPU时间的最简单工具?
EN

Stack Overflow用户
提问于 2018-05-28 07:43:42
回答 2查看 0关注 0票数 0

我正在用C编写一个小程序,我想测量它的性能。

我想看看它在处理器中运行了多少时间,以及有多少缓存命中+未命中。有关上下文切换和内存使用情况的信息也很好。

该程序不到一秒钟即可执行。

我喜欢/ proc / [pid] / stat的信息,但是我不知道如何在程序死亡/死亡后看到它。

有任何想法吗?

编辑:我认为Valgrind增加了很多开销。这就是为什么我想要一个简单的工具,比如/ proc / [pid] / stat,它总是在那里。

EN

回答 2

Stack Overflow用户

发布于 2018-05-28 16:26:39

使用perf

代码语言:javascript
复制
perf stat ./yourapp

来自wiki的示例:

代码语言:javascript
复制
perf stat -B dd if=/dev/zero of=/dev/null count=1000000

Performance counter stats for 'dd if=/dev/zero of=/dev/null count=1000000':

        5,099 cache-misses             #      0.005 M/sec (scaled from 66.58%)
      235,384 cache-references         #      0.246 M/sec (scaled from 66.56%)
    9,281,660 branch-misses            #      3.858 %     (scaled from 33.50%)
  240,609,766 branches                 #    251.559 M/sec (scaled from 33.66%)
1,403,561,257 instructions             #      0.679 IPC   (scaled from 50.23%)
2,066,201,729 cycles                   #   2160.227 M/sec (scaled from 66.67%)
          217 page-faults              #      0.000 M/sec
            3 CPU-migrations           #      0.000 M/sec
           83 context-switches         #      0.000 M/sec
   956.474238 task-clock-msecs         #      0.999 CPUs

   0.957617512  seconds time elapsed
票数 0
EN

Stack Overflow用户

发布于 2018-05-28 16:57:59

你也可以使用

代码语言:javascript
复制
/usr/bin/time -v YourProgram.exe

它会告诉你所有这些信息:

代码语言:javascript
复制
/usr/bin/time -v ls
    Command being timed: "ls"
    User time (seconds): 0.00
    System time (seconds): 0.00
    Percent of CPU this job got: 60%
    Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
    Average shared text size (kbytes): 0
    Average unshared data size (kbytes): 0
    Average stack size (kbytes): 0
    Average total size (kbytes): 0
    Maximum resident set size (kbytes): 4080
    Average resident set size (kbytes): 0
    Major (requiring I/O) page faults: 0
    Minor (reclaiming a frame) page faults: 314
    Voluntary context switches: 1
    Involuntary context switches: 1
    Swaps: 0
    File system inputs: 0
    File system outputs: 0
    Socket messages sent: 0
    Socket messages received: 0
    Signals delivered: 0
    Page size (bytes): 4096
    Exit status: 0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100001370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档