문제

C/C ++ 코드를 프로파일 링하고 가장 많은 시간이 걸리는 부품을 결정하는 가장 좋은 도구를 제안 하시겠습니까? 현재 로그에 의존하고 있지만 불필요한 지연이 도입되었으므로 정보는 정확하지 않습니다.

바람직하게는,이 도구는 그러한 도구가 존재하는 경우 최적화 될 수있는 영역을 감지/제안 할 수 있습니다.

플랫폼 : Linux

응용 프로그램은 임베디드 환경에서 사용되어야하므로 가볍고 외부가되어야합니다 (일부 IDE의 플러그인이 아님).

도움이 되었습니까?

해결책

진심으로 추천 할 수 있습니다 callgrind 와 함께 Kcachegrind.

다른 팁

Linux/FreeBSD의 "GPROF"는 런타임에 CPU를 호그링하는 루틴을 식별하는 매우 간단하고 효율적인 도구입니다. 함수의 중첩 및 평평한 프로파일을 제공합니다. 프로파일 러의 런타임 동안 실행 된 각 기능에 의해 취한 CPU 시간의 백분율과 함수 자체 내에서 취한 비율 및 자식 기능에 의해 취한 비율을 제공합니다. 이를 통해 불쾌한 기능을 쉽게 분리하는 데 도움이됩니다.

Microsoft Visual C ++의 프로파일 러를 사용하여 좋은 경험을했는데 다른 외부 프로그램이 있습니다. 인텔 vtune, 그러나 대부분은 무료가 아닙니다.

플랫폼에 따라 다릅니다. MSVC를 사용하는 경우 일부 버전에는 프로파일 러가 내장되어 있습니다.

Linux에서 내가 사용한 유일한 것은 GPROF이지만 다른 사람들이 있다는 것을 알고 있습니다 (그리고 AMD 또는 Intels는 Linux 버전으로도 사용할 수 있다고 생각합니다).

물론 전체 Valgrind 스위트도 도움이 될 수 있습니다. Callgrind 또는 Cachegrind와 같은 일부 도구는 성능에 대한 많은 정보를 제공 할 수 있습니다.

Qualify 또는 Kcachegrind와 같은 좋은 프로파일 링 도구가 많이 있습니다. 이러한 도구의 한 가지 문제는 런타임 성능을 늦추므로 일부 대형 시스템에서는 충분히 확장되지 않을 수 있다는 것입니다.

때로는 디버거에서 실행하고 Ctrl-C를 누르고 스택 추적을보고 4 번 반복하는 것으로 충분합니다.

당신이 항상 코드의 같은 부분에 있다면 아마도 대부분의 시간을 소비하는 곳을 찾았습니다.

당신은 분명히 두 가지를 원합니다 :

  1. 코드를 프로필하고 측정합니다.

  2. 최적화 할 수있는 영역을 감지합니다.

이것들은 다른 문제입니다. 그들은 당신이 들었을 수도 있음에도 불구하고 동일하지 않습니다.

문제의 경우 (1) 많은 훌륭한 프로파일 러가 제안 될 것입니다.

문제의 경우 (2) 프로파일 러는 간접적으로 만 도움이됩니다.
훨씬 간단하고 일반적으로 더 효과적인 기술이 있습니다.

이봐

우리가 유닉스 세계에 대해 이야기하고 있다면 GPROF / OPROFILE과 함께 갈 것입니다.

앱을 다시 컴파일해야합니다 (최소한 GPROF).

GPROF

Oprofile

당신이 창문에 있다면, 나는 제안한다 aqtime. .NET, Delphi 및 VB (및 모든 C ++ 컴파일러)를 포함하여 거의 모든 컴파일러를 지원하며 (;;) 내가 시도한 최고의 프로파일 링 도구 일뿐입니다. 성능 프로파일 러뿐만 아니라 성능 프로파일 러 일뿐입니다.

성능 측정을 위해 Oprofile Eclipse 용 사용자 친화적 인 플러그인이 존재하므로 좋은 선택입니다. Linux 도구 프로젝트.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top