malloc과 new 사이의 차이점을 couple of posts으로 확인했습니다.C++에서 malloc과 new 사이에 성능 차이가 있습니까?
그러나 성능에 대해 언급 한 게시물이 없으므로 컴파일러가 본질적으로 동일한 작업을 수행 할 경우 성능 차이가 있는지 궁금합니다.
비교를 위해 여기에 기본 유형에 대해 이야기하고 있다고 가정 해 보겠습니다. 한스 패 탄트 감사합니다.
미리 감사드립니다.
malloc과 new 사이의 차이점을 couple of posts으로 확인했습니다.C++에서 malloc과 new 사이에 성능 차이가 있습니까?
그러나 성능에 대해 언급 한 게시물이 없으므로 컴파일러가 본질적으로 동일한 작업을 수행 할 경우 성능 차이가 있는지 궁금합니다.
비교를 위해 여기에 기본 유형에 대해 이야기하고 있다고 가정 해 보겠습니다. 한스 패 탄트 감사합니다.
미리 감사드립니다.
당신은 아마 operator new()
및 operator delete()
(및 배열 형태)로 malloc()
및 free()
을 비교할 것 : 이것은 메모리가 객체의 구조에서 독립적으로 할당하는 방법입니다. C++ 연산자는 malloc()
및 free()
과 같은 얇은 래퍼가 될 수 있습니다 (다른 방법은 없습니다. 사용자가 operator new()
을 안전하게 구현할 수 있습니다.) malloc()
및 free()
으로 환산하여 operator delete()
인 것으로 가정한다.
실제 성능을 확인하려면 두 방법을 합리적인 방법으로 프로파일 링해야합니다. Withouth는 이렇게 했으므로 대부분의 시스템에서 많은 차이를 기대하지는 않습니다. 물론 그 결과는 다른 시스템에 따라 달라질 것입니다.
유일한 방법은 컴파일러의 다양한 옵션을 시간을 측정하는 것입니다. 모든 컴파일러에 적용되는 어렵고 빠른 규칙은 없습니다.
int
또는 double
의 배열을 할당하는 경우, 적절한 구현을 위해 성능 차이를 감지 할 수 없어야합니다.
대답은 특정 컴파일러에 따라 달라질 수 있지만 새로운 구현의 대부분은 malloc을 간단히 호출한다고 생각합니다. malloc은 일반적으로 객체의 생성자를 호출하는 new와 달리 추가 코드를 호출하지 않기 때문에 약간 빠릅니다.
생성자가 실제로 CPU를 많이 사용하는 경우 malloc은 훨씬 빨라졌습니다. 그러나 일반적으로 생성자에서 모든 것을 수행해야하는 이유가 있습니다. 그렇지 않은 경우에는 생성자가 아닌 다른 생성자를 추가 할 수 있습니다. 하지만 malloc은 POD 유형에만 사용되어야하며 객체에 대해서는 사용되지 않아야합니다. 왜냐하면 생성자가 일반적으로 이유가 있기 때문입니다. – Philipp
음, malloc()은 생성자를 호출하지 않습니다. 합리적인 비교를 어떻게 기대합니까? –
참. 기본 유형을 비교해 보겠습니다. 그게 더 합리적일까요? – OneMore
질문에서 명확하게 작성해야합니다. 코멘트에 넣는 것만으로는 충분하지 않습니다. –