이펙티브 c++ 읽으면서 코드중복에대해서 집착적이게 다루더라고.
윤성우 책에선 코드중복되는 예제가 많았고 거기에 문제제기내용이 없었는데
이펙티브c++은 아주 간단한 매개변수 디폴트값 마저도 코드중복을 문제삼는정도...
템플릿이라면 코드중복이 엄청 커질 수 있어서 이해는 하겠는데
이펙티브 c++ 이게 옛날책이라서 이런걸 신경쓰는거 아닌지 걱정됨..
코드중복이 있으면 메모리의 코드영역을 더 잡아먹는거잖아?
이게 그렇게 신경쓸 만큼의 크기인지 궁금해
그리고 다른질문이지만 힙에있는 메모리에 접근하는건 그냥 데이터나 스택보다 느려?
메모리가 작고 귀했던 시절에는 성능과 더불어 중요한 이슈 중 하나였지. 하지만 현대의 PC들은 메모리 값이 싸지고 32비트 기준으로 프로세스 가상 공간(4GB) 하나 쯤은 우습게 커버할 수 있는 램 용량으로 발전해서 메모리 크기는 어지간하면 무시한다. 메모리 크기가 문제가 될 때는 메모리를 너무 많이 잡아먹거나 메모리 누수(memory leak)와 같은 문제 때문에 페이징으로 성능이 저하될 때, 곧 성능과 직결되는 문제가 생길 때임. 그게 아니라면 뭐 몇 메가 정도는 팍팍 써도 별 문제가 없다. 물론 자원이 극도로 제한된 임베디드를 고려한다면 메모리는 또 다시 중요한 이슈가 되지만.
코드도 캐싱되기땜에 작을수록 빠르다 극도의 최적화에선 코드크기도 중요
그리고 두번째 질문에 대해 답변하자면 일단 일반적인 PC(Intel or AMD CPU) 기준으로 일반 데이터든 스택이든 힙 메모리든 똑같이 컴퓨터에 꽂혀있는 RAM의 어떤 공간을 액세스할 뿐이어서 접근 시간은 차이가 없다.
ㅅㅅㅅ찡의 댓글은 언제나 봐도 교과서급으로 잘 대답해준단 말이야
감사합니다!
코드 중복이라는 것이 어셈 코드 얘기하는거임? 복붙해서 넣은 코드 얘기하는거?
그책을 자세히 본적은 없어서 모르겠지만 메모리 때문에 중복을 피하라는 의미는 아닐것 같다.
이부분에 대해 한 마디 해주고 싶었는데 졸려서 자버렸다 ㅡ,.ㅡ
내 경험상 대개의 시스템에서 힙이 아주 조금 느림. (옛날엔 많이 느렸고)