IT技术博客大学习 共学习 共进步

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

AnySQL.net 2009-11-06 09:17:49 浏览 6,686 次

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

以下是代码片段:
#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系统需要关注的一些点 (阅读 17,406)
  2. 30分钟3300%性能提升――python+memcached网页优化小记 (阅读 13,582)
  3. 基于SSD的数据库性能优化 (阅读 8,664)
  4. jQuery性能优化指南 (阅读 8,645)
  5. mysql sql 百万级数据库优化方案 (阅读 6,004)
  6. PHP 性能优化技巧-google (阅读 5,907)
  7. 一次神奇的MySQL优化 (阅读 5,903)
  8. PHP最佳实践 (阅读 5,884)
  9. Linux 64位, MySQL, Swap & Memory 优化 (阅读 5,544)
  10. Mysql中的排序优化 (阅读 5,524)