C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[219] [참고]아래 팁은 정수형 변수만 가능합니다.
김백일 [] 6969 읽음    2001-11-26 22:15
음... 이 팁은 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을 적게 먹기 때문이죠.

+ -

관련 글 리스트
219 [참고]아래 팁은 정수형 변수만 가능합니다. 김백일 6969 2001/11/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.