>> Edit article
이름
제목
패스워드
((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