c代码的性能

web*_*kul 4 c linux performance gcc profiling

我正在使用gcc来完成我的c程序.我怎样才能检查哪种方法更快(假设我编写了一个代码来交换两个数字并使用位运算符重写了相同的代码),linux中是否有任何工具可以检查时间,性能和空间?

Rom*_*nko 9

男人gprof应该帮助.

但请记住,如果使用分析器,则应测试大量循环.并且您应该在计算缓存效果的情况下执行此操作,因此至少应该在具有随机(但相同)顺序的足够大的内存区域数据上执行此操作.为此使用srandom()/ random().

最小化设置:

  • 写'test bed',通过相同的输入循环不同的方法(足够大的循环).
  • 使用GNU编译器-pg选项编译/链接您的模块.
  • 跑.您应该获取配置文件数据文件(通常是gmon.out).
  • man gprof - > gprof [options] - >生成您需要的报告 - >查看您真正需要的内容.


Pet*_*ist 7

在简单的情况下,您描述我会使用它

$ vi test.c
$ make test
cc     test.c   -o test
$ time ./test

real    0m1.001s
user    0m0.001s
sys     0m0.000s
Run Code Online (Sandbox Code Playgroud)

当比较几个组件的完整执行时,我会使用Roman概述的gprof方法.

这一切都取决于具体情况.但是对于我来说,时间方法中有9次是足够的.但我想在使用线程多个进程和GUI代码时,情况会有所不同.然而,这不是我的专业领域.

有一个名为Valgrind(维基百科)的工具,我建议你也看看.

Valgrind工具可以自动检测许多内存管理和线程错误,并详细介绍您的程序.