c – 将C int数组重置为零:最快的方式?

假设我们有一个T myarray [100] T = int,unsigned int,long long int或unsigned long long int,什么是最快的方式来重置其所有内容为零(不仅是初始化,而是重置内容几个次在我的程序)?也许与memset?

相同的问题动态数组,如T * myarray = new T [100]。

最佳答案
memset可能是最快的标准方式,因为它通常是一个直接在程序集中编写并通过手工优化的例程。

memset(myarray, 0, sizeof(myarray)); // for automatically-allocated arrays
memset(myarray, 0, N*sizeof(*myarray)); // for heap-allocated arrays, where N is the number of elements

– -编辑 – –

顺便说一句,在C中惯用的方式是使用std :: fill:

std::fill(myarray, myarray+N, 0);

其可以被自动优化为memset;我相信它会像intset的intset一样快,如果优化器不够聪明,它可能会对较小的类型执行稍差。仍然,当有疑问,配置文件。

转载注明原文:c – 将C int数组重置为零:最快的方式? - 代码日志