인터넷에 있는 코드 몇개를 테스트했다.
임베디드를 하다보면, itoa를 직접 구현해야 할 경우가 가끔있다.
2번째가 라이브러리에 있는 함수
라이브러리에 포함된 함수가 가장 빨랐다.
테스트코드
void _debug_puts2(char *s,int a,int b);
void test_speed_itoa10_buf()
{
int v_start=-1000000,v_end=1000000,n=0,v;char buf[32];DWORD t[8];
_debug_puts("test_speed_itoa10_buf START\r\n");
t[0]=GetTickCount();
for(v=v_start;v<v_end;v++)
{
itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);//1
itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);//2
itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);//3
itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);//4
itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);itoa10_buf(v,buf);//5
}
t[1]=GetTickCount();
for(v=v_start;v<v_end;v++)
{
itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);//1
itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);//2
itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);//3
itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);//4
itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);itoa(v,buf,10);//5
}
t[2]=GetTickCount();
for(v=v_start;v<v_end;v++)
{
i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);//1
i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);//2
i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);//3
i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);//4
i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);i_to_a(v,buf);//5
}
t[3]=GetTickCount();
for(v=v_start;v<v_end;v++)
{
itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);//1
itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);//2
itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);//3
itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);//4
itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);itoa2(v,buf,10);//5
}
t[4]=GetTickCount();
t[0]=t[1]-t[0];
t[1]=t[2]-t[1];
t[2]=t[3]-t[2];
t[3]=t[4]-t[3];
_debug_puts("test_speed_itoa10_buf END\r\n");
//[0] 6485
//[1] 5328
//[2] 8891
//[3] 7750
}