【发布时间】:2012-04-04 16:49:26
【问题描述】:
我正在对算法进行基准测试,没有必要知道细节。主要组件是缓冲区(整数的原始数组)和索引器(整数 - 用于访问缓冲区中的元素)。
缓冲区最快的类型似乎是 unsigned char,以及 short、int、long 的有符号和无符号版本。但是 char/signed char 比较慢。差异:1.07 倍。
对于索引器,有符号和无符号类型之间没有区别。但是 int 和 long 比 char 和 short 快 1.21 倍。
在考虑性能而不是内存消耗时,是否应该默认使用一种类型?
注意:对缓冲区元素和索引器使用的操作是赋值、递增、递减和比较。
【问题讨论】:
-
你如何衡量这个?它是在一个几乎没有其他处理运行的系统上吗?您是使用计时器来计算它,还是使用 JTAG 连接到开发板并计算 CPU 周期?
-
是的,了解细节很重要,因为您可能实际上在某个时候测量内存带宽和类型转换。
-
看看
stdint.h。您可能对int_fast32_t类型感兴趣。 (或您喜欢的任何尺寸) -
我正在使用 std::clock() 来测量运行算法所用的时钟。该算法运行的时间足够长,以使使用 std::clock() 获得的结果有效。
-
你的算法是多线程的吗?
标签: c++ performance