이것은 함수 호출 방식을 변경하지 않습니다. 당신이 모든 단일 기능을 프로파일 링 할 수 있기를 원한다면 아마도별로 사용하지 않을 것입니다.
static inline int real_function() {
// previous contents of function(), with no tic or toc
}
int function() {
tic();
int r = real_function();
toc();
return r;
}
다른 사람들처럼 프로파일 러를 사용하면 장기적으로 많은 노력을 절약 할 수 있습니다. 그들은 말하지 않기 때문에 : 플랫폼에 플랫폼이있는 경우.
그렇다면 가장 쉬운 방법은 (코딩 규칙으로) 함수에 하나의 종료점 만 있어야하며 종료점은 매크로를 통해 수행해야한다는 것입니다. 그런 다음 입력 및 종료시 코드로 모든 기능을 수동으로 계측 할 수 있습니다. 다중 리턴을 가진 레거시 함수는 위와 같이 래핑 될 수 있습니다.
또한 컴파일러에서 처리 할 때 염두에 두어야 할 점이 있습니다. 이 작업을 작성할 수 있습니다
tic();
do_something();
int i = something_else();
toc();
return i;
을 컴파일러는 다음 something_else 상당한 시간이 소요에도 불구하고, 그것은이에 코드를 켤 수도, 어떤 부작용을 something_else이 없다고 판단하는 경우 :
tic();
do_something();
toc();
return something_else();
그리고 당신의 프로필 데이터는 귀하의 기능에 소비 된 시간을 과소 평가합니다. 실제 프로파일 러를 사용하는 것이 매우 좋은 또 다른 이유는 컴파일러와 협력 할 수 있기 때문입니다.
이것은 작성할 수 없습니다. – einpoklum