>> Delete Reply from No. 0 article
No. RE: RE: RE: 그럴 경우에

등록 2002-03-22 15:56:00     조회 5
이름 @.@    

		((a)^=(b)^=(a)^=(b)) 의 경우
mov 연산 6번에 xor 연산 3번에 사용되고
((c)=(b),(b)=(a),(a)=(c)) 의 경우
mov 연산 6번 만 하면 되는 걸로 기억되는데요..
맞는지 틀린지는 한번 확인해 봐야 되겠군요.
아.. 참.. 컴파일러 마다 조금씩은 틀리겠군요.
제가 말한 것은 바보같은 VC++의 얘기 입니다.
 : 매크로를 써서 속도를 높인다면
: 님이 생각하신 방법보다는 원문의 XOR을 이용한 것이 더욱더 빠릅니다.
: 대입의 경우 내부적으로 mov 명령어로 처리되며 XOR의경우는 xor로 처리됩니다.
: mov 명령어 보다 xor 명령어가 훨씬 빠릅니다.
:
: 그럼 즐프...
:
: : 음냐.. 컴파일 되겠죠? 잘 모르겠당... ^^;
: : 어짜피 함수 호출하는 거는 시간 많이 걸리는 건 당연하고..
: : 매크로를 써서 속도를 높일 거면 이 왕 하는 거 좀 더 빠르게..
: : 요렇게 하면 연산 횟수가 9번에서 6번으로 줄 거 같은디...
: :
: : <pre>
: : #include < stdio.h >
: :
: : //#define SWAP(a, b)		((a)^=(b)^=(a)^=(b))
: : #define SWAP(a, b)		((c)=(b),(b)=(a),(a)=(c))
: : int c;
: : 
: :  int main(void) {
: :  	int a = 22;
: :  	int b = 44;
: : 
: :  	SWAP(a, b);
: : 
: :  	printf("a = %d, b = %d", a, b);
: : 
: :  	return 0;
: :  }
: : </pre>
 --
-----
[관리자] 패스워드를 입력 하십시오. 답장이 존재하면 함께 삭제됩니다.[ 목록 | 이전 ]
패스워드:    

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved