레지스터와 L1케시에 성능에 대해서???
글쓴이: kkb110 / 작성시간: 화, 2005/03/15 - 2:29오전
float의 덧셈 asm 명령어 성능측정을 해봤는데요
1. fadd 레지스터1 += 레지스터2
2. fadd 메모리 += 레지스터1
이런꼴로 테스트를 해봤습니다.
#include <iostream>
inline unsigned int getcycle(void)
{
__asm
{
cpuid
rdtsc
}
}
int main()
{
int u,v,N;
N = 10000;
__asm
{
fld dword ptr [esp];
fld dword ptr [esp];
}
getcycle();
getcycle();
u = getcycle();
for(int i = 0; i < N; ++i)
{
__asm
{
fadd st,st(1) ;
fadd st,st(1) ;
fadd st,st(1) ;
fadd st,st(1) ;
fadd st,st(1) ;
fadd st,st(1) ;
fadd st,st(1) ;
fadd st,st(1) ;
}
}
v = getcycle();
std::cout << "first : " << (((double)(v-u))/N) << "\n\n\n";
getcycle();
getcycle();
u = getcycle();
for(int i = 0; i < N; ++i)
{
__asm
{
fadd dword ptr [esp] ;
fadd dword ptr [esp] ;
fadd dword ptr [esp] ;
fadd dword ptr [esp] ;
fadd dword ptr [esp] ;
fadd dword ptr [esp] ;
fadd dword ptr [esp] ;
fadd dword ptr [esp] ;
}
}
v = getcycle();
std::cout << "second : " << (((double)(v-u))/N) << "\n\n\n";
std::cin >> N;
__asm
{
fstp st(0);
fstp st(0);
}
return 0;
}
그런데 이상하게도 결과는 거의 같더군요.
이벤치가 사실이라면 연산시킬때 일부 스택을 temp로 이용해도 된단 소리인데..
혹시 좀더 상세하게 알수 없을까요?
아니면... 제컴은 p4 1.8A 이였는데..
저소스코드로 테스트좀 부탁들입니다 ^^;
Forums:


댓글 달기