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

#include <stdio.h>

void main ()
{
  int i;
  for (i=0;i<20000000;i++)
  {
      printf(“%012d\n”,i);
  }
}

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

#include <stdio.h>

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<i;k++) v_num = v_num/1000;
  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, 采用缓冲输出, 估计第二段程序更显优势.