+ 이 글은 작성자가 직접 공부하고 복습하며 작성한 글입니다. 만약 직접 작성하지 않았다면, 꼭 출처를 밝히겠습니다!
+ 이 글은 개인적인 공부를 바탕으로 작성되었기에, 틀린 부분이 있을 수 있으며, 틀린 부분이 있다면 알려주시면 감사하겠습니다!
+ 이 글을 다른 곳으로 가져가신다면, 꼭 출처를 남겨주세요~
+ '참고사이트'는 공부하기 위해 참고한 사이트들을 모아 둔 것입니다.
+ 혹시라도 문제가 된다면 바로 조취를 취할테니, 말해주시면 감사하겠습니다!
Q. 매개변수가 있는 함수 호출이 더 빠르다???
VisualStudio2017에서 매개변수 관련 실험을 하다 신기한 것을 발견했습니다.
바로, 매개변수가 있는 함수 호출이 더 느리다는 것입니다!
매개변수가 있는 함수가 당연히 더 느릴 줄 알고, 얼마나 더 느린지 실험을 해보려고 한건데... 정반대의 결과가 나와서 참 당황스러웠습니다.
실험했던 소스코드는 밑에 추가하겠습니다.
대체 어느 곳에서, 무엇때문에 이런 결과가 나와버린 걸까요...?
<변화한 조건>
1. 함수 정의 순서를 바꾼다. - [변화없음] 예상대로 주소로 접근하는거라 달라지지 않음.
2. (결과변화없음) 함수명을 바꾼다.(test1 <-> test2) - [변화없음] 예상대로 주소로 접근하는거라 달라지지 않음.
<소스코드>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #include<iostream> #include <time.h> using namespace std; int cnt = 0; void test1() { cnt++; } void test2(int a, int b, int c) { cnt++; } int main() { clock_t start; clock_t end; bool asdf = true; int count = 0; int a = 3; int b = 5; int c = 12; while (count < 5) { start = clock(); cnt = 0; for (int i = 0; i < 200000000; i++) { test1(); //test2(a, b, c); } end = clock(); cout << (double)(end - start) / CLOCKS_PER_SEC << endl; count++; } return 0; } | cs |
<소스코드 결과>
[test1] : 2.9 ~ 3.0 sec
[test2] : 2.8 ~ 2.9 sec
왜 이런 결과가 나오는 걸까요...?ㅠㅠ
Copyright © -강정이좋아- 무단 전재 및 재배포는 하지 말아주세요.