假设我们有一个T myarray[100]T = int,unsigned int,long long int或unsigned long long int,将所有内容重置为零的最快方法是什么(不仅用于初始化,而且在程序中多次重置内容) ?也许与记忆模式?
对于类似的动态数组也存在同样的问题T *myarray = new T[100]。 问题来源于stack overflow
memset(from <string.h>)可能是最快的标准方法,因为它通常是直接用汇编语言编写并手工优化的例程。
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(from ):
std::fill(myarray, myarray+N, 0); 这可以被自动优化成memset; 我敢肯定,它会以最快的速度为工作memset为intS,虽然它可能对较小的类型,如果优化器是不够聪明执行略差。不过,如果有疑问,请关注。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。