menset的效率

一.摘要

  memset是计算机中C/C++语言初始化函数。作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作。

二.示例

 1 /**memset的效率对比*/
 2 #include<stdio.h>
 3 #include<string.h> 
 4 #include<time.h>
 5 #define Max 1000
 6 double begin[10000],end[10000];
 7 int data[Max][Max];
 8 double caculate(){
 9     int i;
10     double sum=0;
11     for(i=0;i<10000;i++){
12         sum=sum+(end[i]-begin[i]);
13     }
14     return sum/10000/CLOCKS_PER_SEC*1000;//返回毫秒数 
15 }
16 int main(){
17     int i,j,k;
18     //统计menset()函数用时 
19     memset(begin,0,sizeof(begin));
20     memset(end,0,sizeof(end));
21     for(k=0;k<10000;k++){
22         begin[k]=clock();
23         memset(data,0,sizeof(data));
24         end[k]=clock();
25     }
26     printf("memset()函数平均用时:%fms
",caculate());
27     //统计for循环用时 
28     memset(begin,0,sizeof(begin));
29     memset(end,0,sizeof(end));
30     for(k=0;k<10000;k++){
31         begin[k]=clock();
32         for(i=0;i<Max;i++){
33             for(j=0;j<Max;j++){
34                 data[i][j]=0;
35             }
36         }
37         end[k]=clock();
38     }
39     printf("for循环平均用时:%fms
",caculate());
40     return 0;
41 }

三.结果

  测了N多遍,很明显,menset()初始化比for循环初始化快很多,for循环的用时大概是它的十倍左右;

  但是该测试还是有局限性,因为代码里只对 100*100 的数组进行初始化,对于其他规模的数组并没有测试,因此该测试仅供参考。

原文地址:https://www.cnblogs.com/chasemeng/p/12821348.html