2017-05-23 8 views
-4

내 프로그램이 특정 클래스의 기본 복사 생성자에서 소비하는 시간을 알고 싶습니다. 컴파일러에 의해 기본 복사 생성자가 구현되는 방식과 동일한 방식으로 복사 생성자를 구현하는 방법이 있지만, 본문을 실행하기 전후의 현재 시간을 확인하는 일부 계측 코드를 추가하면됩니다. 생성자?C++에서 기본 복사 생성자의 성능을 측정하는 방법

+0

자신의 복사본 생성자를 작성하고 기본값과 걸리는 시간을 비교하십시오. 그러나 기본값이 올바른 복사본을 작성하면 자신의 구현이 어떻게 더 빠를 수 있는지 알 수 없습니다. –

+2

C++ 11에서는 계승 논리가있는 사용자 지정 생성자를 추가하고 일반 복사 생성자에 위임하는 위임 생성자를 사용합니다. 그렇지 않으면 컴파일러가 정상적으로 기본 복사 생성자를 생성하도록하고 코드를 작성하는 대신 런타임에 동적으로 코드를 계측하는 외부 프로파일 러를 사용하십시오. –

+0

일반적으로 복사 생성자가 인라인되지 않는 한 프로파일 러에서 생성 된 복사본 생성자에 대한 정보를 제공 할 수 있습니다. 전통적인 프로파일 러가 오기가 어려운 플랫폼에서 작업하고 있습니까? –

답변

0

gprof 또는 다른 프로파일 러를 사용하십시오. 물론 자신 만의 타이밍 루프를 작성할 수 있지만 C++ 컴파일러는 매우 적극적으로 최적화 할 수 있으므로 작업이 어려워집니다. 적절한 프로파일 러 (profiler)가 프로그램의 시간을 정확히 알려줍니다.