开发者社区> 问答> 正文

将C int数组重置为零:最快的方法?

假设我们有一个T myarray[100]T = int,unsigned int,long long int或unsigned long long int,将所有内容重置为零的最快方法是什么(不仅用于初始化,而且在程序中多次重置内容) ?也许与记忆模式?

对于类似的动态数组也存在同样的问题T *myarray = new T[100]。 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 12:08:43 444 0
1 条回答
写回答
取消 提交回答
  • 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,虽然它可能对较小的类型,如果优化器是不够聪明执行略差。不过,如果有疑问,请关注。

    2020-02-08 12:08:53
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载