【发布时间】:2010-11-11 04:05:33
【问题描述】:
有两种方法可以将整数/浮点数组归零:
memset(array, 0, sizeof(int)*arraysize);
或:
for (int i=0; i <arraysize; ++i)
array[i]=0;
显然,memset 对于大型arraysize 更快。但是,memset 的开销实际上在什么时候大于 for 循环的开销?例如,对于大小为 5 的数组 - 哪个最好?第一个、第二个,甚至可能是展开的版本:
array[0] = 0;
array[1] = 0;
array[2] = 0;
array[3] = 0;
array[4] = 0;
【问题讨论】:
-
好吧,我真的看不出有趣的部分。唯一真正的答案是通过在给定平台/编译器上对三个版本进行基准测试。此外,知道答案并没有真正的用处,不是吗?但是为了有效地编写基准代码;)
-
是的,我打算自己做这个。但现在整个互联网都会知道! (至少对于带有 mingw 的 gcc 的 Windows...)
-
我只是想知道你是怎么想到这个问题的?
-
你没有提到第三版:
int array[5] = {0}; -
这仅用于在声明站点进行初始化。问题中的表格可随时用于清除现有数组。
标签: c performance benchmarking