template<typename T>
_TCHAR* itot(T n)
{
static _TCHAR str[] =
{
_T('0'), _T('0'), _T('0'), _T(','),
_T('0'), _T('0'), _T('0'), _T(','),
_T('0'), _T('0'), _T('0'), _T(','),
_T('0'), _T('0'), _T('0'), _T(','),
_T('0'), _T('0'), _T('0'), _T(','),
_T('0'), _T('0'), _T('0'), _T(','),
_T('0'), _T('0'), _T('0'), _T(','),
_T('0'), _T('0'), _T('0'), _T( 0 ),
};
_TCHAR* ptr = str + (sizeof str / sizeof str[0] - 2);
_TCHAR sign = 0;
unsigned int back = 1;
if (n < 0) n = -n, sign = _T('-');
do
{
ptr[ 0] = n % 10 + '0';
ptr[-1] = n / 10 % 10 + '0';
ptr[-2] = n / 100 % 10 + '0';
back += (n < 100) + (n < 10);
n /= 1000;
ptr -= 4;
} while(n);
ptr += back;
*ptr = sign;
return ptr + !sign;
}
저도 함 도전해 보겠습니다 성님 ㅋㄷㅋㄷ
보고 올리면 안되쥐~
여튼 해보셔~
다른 방식이면 갠찮지 않나엽? ㅋㄷㅋㄷ 저 좀 전에 집 도착해서 컴 킴.
한번 더 최적화.
ㅋㅋㅋ _T('0'), 이거 되게 귀엽당
_T('0'), _T('0'), _T('0'), <==== 귀엽지 않아요?
전 프로그래머로 글른듯
_T(','), <== 이것도 귀엽네
하지만 이게 끝이 아니란거.
마지막 최적화는 ㅅㅅㅅ 가 올리는거 보고 해야징 ㅋㄷㅋㄷ
인라인 어셈 써도 되져? ㅋㄷㅋㄷ
나누기랑 나머지랑 한방 노릴려고? ㅋㄷㅋㄷ
그걸로도 내 궁극의 최적화는 못막아.
꽤나 자신감이 넘치시군요. (즈이분 지신가 아루 소우 데스네)
그럼~
근데 최적화의 신 답게 역시 형님 꺾기가 어렵긴 하네요 ㅋㄷㅋㄷ 지금 형 이기는 코드 올릴 수 있다는 보장이 사실은 없음. 그냥 도전만 하는 중 ㅋㄷㅋㄷ
이 담 단계가 가관이니까 : )
이건 그냥 맛뵈기.
gg. 16a+b ==> 10a + b + ((a+a+a) << 1) 로 장난질 쳐보려다가 ㅈㅈ ㅋㅋ
걍 형님 코드나 좀 더 최적화 시킬게요.
여기 있는 내 코드론 지금 내 마지막 전략엔 택도 없어 ㅋㅋ
성님 코드에서 TCHAR numbers[1000][4] = {TEXT(",000"),TEXT(",001"),TEXT(",002"),...,TEXT(",999")} 넣어놓은 다음에
전에 제가 올린 구조체 개드립으로 한꺼번에 4 문자를 대입하면 더 최적화 안되려나요?
그 문법은 안되겠지? 널이 들어가니 5개짜리임.
응 나도 그렇게 짜고 있어 ㅡㅡㅋ
근데 그것만으론 안됨.
[4]라고 제한해 놨으니 돼요.
back 미리 계산해줄것도 1000개
ㄷㄷ algorism이 아니라 algoism이네요 ㅋㅋㅋㅋㅋㅋ
근데 난리 호들갑이지 그게 ㅋㅋ
거기까지 가버리면 다른 연산할 캐시 다 빼먹음 ㅋ
근데 아까 어셈으로 Binary to BCD 명령어랑 BSWAP 명령어로 어찌 짜보려고 헀는데 Binary to BCD 명령어가 없음 잼
그냥 딱 요정도가 좋아유~
와 최적화 시바 프로그래머의신이다
난 저거 도배하기 싫어서 class 짰는데 itot_init. itot_init run; 이라고 전역에 선언하면 컨스트럭터가 초기화 ㅋ
http://dblack.tk
커뮤니티 사이트 입니다 많은 이용 부탁 드립니다.