ex 1 0 값 swap 되는 속도 궁금해서 테스트하는데 존나 느리네..
소스가 잘못 됬나?
using namespace std;
using namespace chrono;
int main() {
// your code goes here
int a = 1, b = 2;
int *p_a = &a;
int *p_b = &b;
int idx = 0;
long long count = 100000001;
system_clock::time_point start = system_clock::now();
int* temp;
while(count > 0)
{
temp = p_a;
p_a = p_b;
p_b = temp;
count--;
}
system_clock::time_point end = system_clock::now();
duration<double> sec = end - start;
printf("%d %lf\n", *p_a, sec);
count = 100000001;
start = system_clock::now();
while (count > 0)
{
idx ^= 1;
count--;
}
end = system_clock::now();
sec = end - start;
printf("%d %lf\n",idx, sec);
count = 100000001;
start = system_clock::now();
while (count > 0)
{
std::swap(p_a, p_b);
count--;
}
end = system_clock::now();
sec = end - start;
printf("%d %lf\n", p_a, sec);
return 0;
}
스왑 존나 빠른데;; 그거 보통 move로 구현하는거라 더 빠르게 만들기 힘듬 - return 0;
최적화 걸었니? 그리고 새꺄 auto 좀 쓰자 system_clock::time_point 가 뭐냐 흉하게 - return 0;
최적화 어떻게 거냐? 그냥 디버깅했는데 위에건 0초인데 swap은 9초 걸린다.
p_a를 바꿔주는 이유는 뭔지 모르겠지만 이건 어셈 까봐야 알거같은데요 - 164260의 휘발성 계정