zoukankan      html  css  js  c++  java
  • 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 的数组进行初始化,对于其他规模的数组并没有测试,因此该测试仅供参考。

  • 相关阅读:
    Java之多线程(实现Runnable接口)
    Java之使用HttpClient发送GET请求
    hbase中文内容编码转换
    Java之utf8中文编码转换
    Java之正则表达式
    Java之List排序功能举例
    maven测试时中文乱码问题解决方法
    Hbase之IP变更后无法启动问题解决
    Hbase远程连接:Can't get the locations
    重启Hbase命令
  • 原文地址:https://www.cnblogs.com/chasemeng/p/12821348.html
Copyright © 2011-2022 走看看