int add(const int &a, const int &b) { return a+b; }
cout<
보통 "const int* ref= 상수" 즉 상수참조할때 예를 드는 코드인데 이해가 잘 안됩니다.
int add(int a, int b) { return a+b; } 도 똑같인 3을 return하는데 어떤 차이점이 있나요?
새로운 복사 변수를 생성할 필요가 없다는 엄청난(?) 장점이 있죠.
일부 C++ 개발자 중에는 저런 식으로 효율을 높이지 않으면 잠을 못 잔다는 변태들도 있다고 합니다.
뭐 다들 알고 하시는 말씀이겠습니다만 노파심에 부연하면, 위의 예제와 같은 경우엔 절대 효율이 올라가지 않습니다.
64비트 머신에서 int는 4바이트, int&는 8바이트니까 오히려 더 비효율적이죠.
효율이 올라가는 경우는 더 무거운 데이터를 사용할 경우죠. (string이라든지...)
64비트 시스템에서는 4바이트 int나 8바이트 포인터나 어짜피 8바이트 레지스터 통해서 전달됩니다. 데이터 크기가 문제가 아니라, 최적화에 방해가 되는경우 등이 있을수 있겠죠.
아 그러면 넘어가는 1,2를 stack에 추가되지 않는 메모리 효율성을 말하고 싶은 건가요?
메모리를 추가 할당하지 않고, 그렇기 때문에 따로 반환할 필요도 없어진다는 점(?)
------------------------------------------------------------ ProgrammingHolic
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
새로운 복사 변수를 생성할 필요가 없다는 엄청난(?)
새로운 복사 변수를 생성할 필요가 없다는 엄청난(?) 장점이 있죠.
일부 C++ 개발자 중에는 저런 식으로 효율을 높이지
일부 C++ 개발자 중에는 저런 식으로 효율을 높이지 않으면 잠을 못 잔다는 변태들도 있다고 합니다.
...
뭐 다들 알고 하시는 말씀이겠습니다만 노파심에 부연하면, 위의 예제와 같은 경우엔 절대 효율이 올라가지 않습니다.
64비트 머신에서 int는 4바이트, int&는 8바이트니까 오히려 더 비효율적이죠.
효율이 올라가는 경우는 더 무거운 데이터를 사용할 경우죠. (string이라든지...)
64비트 시스템에서는
64비트 시스템에서는
4바이트 int나 8바이트 포인터나
어짜피 8바이트 레지스터 통해서 전달됩니다.
데이터 크기가 문제가 아니라,
최적화에 방해가 되는경우 등이 있을수 있겠죠.
아 그러면 넘어가는 1,2를 stack에 추가되지
아 그러면 넘어가는 1,2를 stack에 추가되지 않는 메모리 효율성을 말하고 싶은 건가요?
그렇죠
메모리를 추가 할당하지 않고, 그렇기 때문에 따로 반환할 필요도 없어진다는 점(?)
------------------------------------------------------------
ProgrammingHolic
댓글 달기