음... 이 팁은 C를 처음 배울때 매크로 함수 예제로 보았던 것이군요.
예를 들어,
#define EXCHANGE((x), (y)) ((x) ^= (y) ^= (x) ^= (y))
XOR 연산의 성질을 응용한 유용한 팁이죠.
그러므로 아래 팁은 int, long, char와 같은 정수형 변수만 가능합니다.
실수형이나 다른 타입일때는 불가능합니다.
정수형 변수를 교환하는 연산을 루프를 사용하여
수백, 수천번 이상으로 할 때는 (예를 들어 정렬 앨거리듬 같은)
inline template <typename T> void EXCHANGE(T x, T y)
{ T tmp = x; x = y; y = tmp; }
를 쓸 때보다 약간의 성능 향상을 볼 수 있습니다.
한 번 메모리를 할당하고 세번 데이터를 카피하는 것보다.
세번 XOR을 하는 것이 CPU Time을 적게 먹기 때문이죠.
|