技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 算法 --> 一次简单C程序的性能优化

一次简单C程序的性能优化

浏览:5583次  出处信息

       下面这段简单的程序, 如何优化?

以下是代码片段:
#include 
    void main ()
    {
     int i;
     for (i=0;i<20000000;i++)
     {
         printf("%012d\\n",i);
     }
    }

       下午居然想到要来优化这段程序, 并且写出了更好的程序, 性能提升了30%, 从18秒提升到了12秒.

以下是代码片段:
#include 
    typedef struct _NUMERLIST
    {
       int len;
       char buf[5];
    } NUMBERLIST;
    void printNumber(int num, NUMBERLIST numlist[])
    {
       int v_num,i,j,k,pos=0;
       char tmpbuf[32];
       memset(tmpbuf,0,32);
       v_num=num;
       for(i=3;i>=0;i--)
       {
     v_num = num;
     for(k=0;k
     v_num = v_num % 1000;
     if (v_num > 999)
         pos = pos + sprintf(tmpbuf+pos,"%03d", v_num);
           else
     {
         memcpy(tmpbuf+pos, numlist[v_num].buf,3);
         pos = pos + 3;
     }
       }
       printf("%s\\n", tmpbuf);
    }
    void main ()
    {
     NUMBERLIST numlist[1000];
     int i;
     for (i=0;i<1000;i++)
     {
         sprintf(numlist[i].buf, "%03d", i);
     }
     for (i=0;i<20000000;i++)
     {
         printNumber(i, numlist);
     }
    }
    

       如果优化一下两个程序的IO, 采用缓冲输出, 估计第二段程序更显优势.

建议继续学习:

  1. WEB系统需要关注的一些点    (阅读:14066)
  2. 30分钟3300%性能提升――python+memcached网页优化小记    (阅读:12110)
  3. 基于SSD的数据库性能优化    (阅读:7386)
  4. jQuery性能优化指南    (阅读:7303)
  5. mysql sql 百万级数据库优化方案    (阅读:5034)
  6. 一次神奇的MySQL优化    (阅读:4870)
  7. PHP最佳实践    (阅读:4921)
  8. Linux 64位, MySQL, Swap & Memory 优化    (阅读:4460)
  9. Mysql中的排序优化    (阅读:4340)
  10. PHP 性能优化技巧-google    (阅读:4389)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1