바꿀 수 있는 방법이 많음
임시 변수 이용
int a, b;
int t;
t = a;
a = b;
b = t;
수학적 사고 이용 ㅋㅋ
int a, b;
a = a + b;
b = a - b;
a = a - b;
xor 비트 연산자 이용
int a, b;
a = a ^ b;
b = a ^ b;
a = a ^ b;
속도를 비교해봤는데
Swap함수를 만들어서 두 변수를 파라미터로 참조하여 함수 안에서 바꾸게 하면 세개 다 속도가 비슷하게 나옴
Main(){
for( roop ){
Sawp(a,b)
}
}
Swap(int &a, int &b){
...
}
근데 함수 안쓰고 Main문 안에서 하면 속도차이가 발생함.
Main() {
for( Roop ){
...
}
}
대략 3000000000회 반복으로 돌렸을 때
임시 변수 : 6~7초
+,- 연산 : 14초
xor 연산 : 14초
정도 나옴.
임시변수쓸때는 레지스터와 메모리에 주소값 변경하는걸 내부적으로 하는것보다
메모리에 있는 변수값 레지스터에 올리고 ALU 연산하는게 속도가 더 느린건가??
그나마 swap함수 안에 넣어놓으면 int t 변수가 swap함수 메모리에 올라가는 동작때문에 비슷한건가????
왜 이런걸까.. 궁금하네
암튼 결론 : 임시변수 쓰자.
'언어 > C++' 카테고리의 다른 글
C++ else if문은 최대 몇개까지 될까? (0) | 2021.01.14 |
---|---|
C++ 구조체 만들때 메모리 아끼는 법. (0) | 2021.01.13 |
C++ 디폴트 파라미터의 내부 동작 (0) | 2020.12.24 |
C++ 함수 호출 시 호출 순서 (호출 관례) (0) | 2020.12.18 |
C++ 소멸자를 Virtual로 선언해야하는 이유 (0) | 2020.12.02 |