List of performance analysis tools

This is a list of performance analysis tools for use in software development.

General purpose, language independent

The following tools work based on log files that can be generated from various systems.

Multiple languages

The following tools work for multiple languages or binaries.

Name/Manufacturer OS Compiler/Language What It Does License
Allinea MAP[2] by Allinea Software Linux C, C++, Fortran/Fortran90 applications. Performance profiler. Shows I/O, communication, floating point operation usage and memory access costs.

Supports multi-threaded and multi-process applications - such as those with MPI or OpenMP parallelism and scales to very high node counts.

Proprietary
aprof[3] Linux Any, including assembler

Input-sensitive performance profiler based on Valgrind designed to help developers understand how an application’s performance scales as a function of its input data, exposing possible asymptotic inefficiencies.

Free/open source (GPL)
AQtime by SmartBear Software Windows .NET 1.0 to 4.0 applications (including ASP.NET applications), Silverlight 4.0 applications, Windows 32- and 64-bit applications including C, C++, Delphi for Win32 and VBScript and JScript functions Performance profiler and memory/resource debugging toolset Proprietary
CodeAnalyst by AMD Linux, Windows C, C++, .NET, Java (works at the executable level) GUI based code profiler; does only basic timer-based profiling on Intel processors. Based on OProfile.
As of Mar-2013, CodeAnalyst has been replaced by AMD CodeXL (see below).
Free/open source (GPL) or proprietary
AMD CodeXL by AMD Linux, Windows For CPU profiling: C, C++, .NET, Java (works at the executable level).
For GPU profiling and debugging: OpenCL.
A tool suite that includes both GPU and CPU profilers, as well as a GPU debugger and a static kernel analyzer. Free
Caliper by HP HP-UX with Intel Itanium Integrity platform (IA-64). Profiling tool
CPUProfiler[4] by OsLe Tek Linux, Windows, WinCE Any application compiled for Intel, ARM, PowerPC architectures Monitors CPU and memory usage of processes, and charts process stability during program development. Designed for program managers, allows remote monitoring and management of CPU profiling sessions through a web browser. Proprietary
DevPartner by Borland / Micro Focus .NET, Java Test suite that automatically detects and diagnoses software defects and performance problems. Proprietary
DTrace by Sun Microsystems Solaris, Linux, BSD, Mac OS X Comprehensive dynamic tracing framework for troubleshooting kernel and application problems on production systems in real time. Free/open source (CDDL)
Lucierna by Lucierna[5] Linux (any distribution, kernel 2.6+), Sun Solaris, HP-UX, AIX, Mac OS X 10.7 +, MS Windows Server 2003, 2008 .NET, Java and PHP (for web sites and desktop software) Application Performance Management Proprietary
dynamoRIO by RIO [6] Linux, Windows Dynamic binary instrumentation framework for the development of dynamic program analysis tools. Free/open source - BSD
dynaTrace by Compuware[7] Linux, Windows, iOS, Android, Azure, AWS, AIX, Solaris, HP/UX, zOS, zLinux .NET, Java, PHP, HTML5, AJAX (for web sites), ObjectiveC/iOS, Java/Android, C/C++, CICS, Apache, Nginx, Cassandra, Hadoop, MongoDB, HBase Application Performance Management Proprietary
DynInst Linux, Windows, BlueGene/Q API to allow dynamic injection of code into a running program Free/open source
GlowCode Windows 64-bit and 32-bit applications, C, C++, .NET, and dlls generated by any language compiler. Performance and memory profiler which identifies time-intensive functions and detects memory leaks and errors Proprietary
gprof Linux/Unix Any language supported by gcc Several tools with combined sampling and call-graph profiling. A set of visualization tools, VCG tools, uses the Call Graph Drawing Interface (CGDI) to interface with gprof. Another visualization tool which interfaces with gprof is KProf. Free/open source - BSD version is part of 4.2BSD and GNU version is part of GNU Binutils (by GNU Project)
IgProf[8] Linux Any compiled language (C, C++, Fortran, etc.), Python (cProfile) compatibility Performance (sampling) and memory (heap, leaks, and total dynamic allocations) profiler, plus dynamic binary instrumentation. Text and navigable webpage output with full call graphs. GPL
Linux Trace Toolkit (LTT) Linux Requires patched kernel Collects data on processes blocking, context switches, and execution time. This helps identify performance problems over multiple processes or threads. Superseded by LTTng. GPL
LTProf[9] Windows Visual C++, Borland CBuilder, Delphi and VB applications CPU profiling tool Commercial
LTTng (Linux Trace Toolkit Next Generation) Linux System software package for correlated tracing of kernel, applications and libraries GPL/LGPL/MIT
OProfile[10] Linux Profiles everything running on the Linux system, including hard-to-profile programs such as interrupt handlers and the kernel itself. Sampling profiler for Linux that counts cache misses, stalls, memory fetches, etc. Open Source GPLv2
OpenPAT[11][12] Linux, FreeBSD, OSX Any compilable language including C, C++, Fortran and languages that compile to bytecodes such as Java and C# with appropriate toolchain configurations. Statically instruments program assembly to call a tool with a stream of dynamic trace information when the program runs. Existing tools measure hotspot, control flow, data flow and other information. Free and Open Source (requires registration)
Oracle Solaris Studio Performance Analyzer[13] Linux, Solaris C, C++, Fortran, Java; MPI Performance and memory profiler Free
Paraver Linux, Mac OS X, Windows [14] For parallel computing clusters Performance analysis tool based on trace files; allows viewing the progress of the application in a temporal axis and also perform accumulation of performance metrics in a table like regular profilers. Free/open source (LGPL)
PGPROF by The Portland Group Linux, Mac OS X, Windows C, C++, and Fortran applications using OpenMP and MPI parallelism Sampling and compiler-based instrumentation for application profiling Proprietary
PmcTools FreeBSD Provides non-intrusive, low-overhead and innovative ways of measuring and analysing system performance. It exploits the same underlying hardware counters as Linux' OProfile.
perf tools Linux kernel 2.6.31+ Sampling profiler with support of hardware events on several architectures. GPL
Performance Application Programming Interface (PAPI) Various Library for hardware performance counters on modern microprocessors
Pin by Intel[15] Linux, Windows Dynamic binary instrumentation system that allows users to create custom program analysis tools Proprietary but free for non-commercial use
pprof, part of gperftools[16] by Google Linux, Unix Sampling profiler with context-sensitive call graph capability. Open-source
Prism by CriticalBlue Linux, Android C/C++, Java, JavaScript Tool that dynamically traces software applications at runtime to capture data interactions between threads, data dependencies, cache analysis, along with the microprocessor pipeline Proprietary
Rational PurifyPlus AIX, Linux, Solaris, Windows Performance profiling tool, memory debugger and code coverage tool Proprietary
Shark by Apple Mac OS X (discontinued with 10.7) Performance analyzer Free
Shiny[17] Cross-platform C, C++, Lua Performance analyzer with call graphs and time allocations Free/open source (MIT license)
SlowSpotter and ThreadSpotter by Acumem (Rogue Wave) Linux, Solaris, Windows Most compiled languages including Ada Diagnose performance problems related to data locality, cache utilization and thread interactions. Commercial
Stackify [18] Linux, Windows Most compiled languages Monitor application, webpages and server as well as track custom metrics, errors and logs, and manage notification and escalation process Commercial
Streamline[19] by ARM Holdings Linux, Android C and C++ A graphical performance visualizer of hardware and software for ARM CPUs, Mali GPUs, OpenCL, and power consumption. Proprietary
Sysprof Linux Sampling CPU profiler that uses a kernel module to profile the entire system, as opposed to a single application. It displays the time spent in each branch of the applications' calltrees.[20] GPLv2
Systemtap Linux Programmable system tracing/probing tool; may be scripted to generate time- or performance-counter- or function-based profiles of the kernel and/or its userspace. Open source
TAU Linux, Mac OS X, Windows C, C++, Fortran/Fortran90, UPC, Java, Python, MPI, OpenMP, CUDA. System for profiling and tracing; supports gathering performance information through instrumentation of functions, methods, and basic blocks as well as event-based sampling. Paraprof visualization tool aggregates results in single node/context/thread forms. Open source
Valgrind Linux Any, including assembler System for debugging and profiling; supports tools to either detect memory management and threading bugs, or profile performance (cachegrind and callgrind). KCacheGrind, valkyrie and alleyoop are front-ends for valgrind. Free/open source (GPL)
Vampir[21] Linux, Mac OS X, Windows Any language supported by the VampirTrace[22] or Score-P[23] measurement infrastructures (currently C, C++, Fortran/Fortran90 with support for various parallelization paradigms like MPI, OpenMP and Pthreads) Vampir is a visualization tool for analyzing trace files created with the open source measurement infrastructures VampirTrace and Score-P. Proprietary
VTune Amplifier XE by Intel Corporation Linux, Windows C, C++, Fortran, .NET, Java Tool for serial and threaded performance analysis. Hotspot, call tree and threading analysis works on both Intel and AMD x86 processors. Hardware event sampling that uses the on chip performance monitoring unit requires an Intel processor. Proprietary
Windows Performance Analysis Toolkit by Microsoft[24] Windows Freeware/proprietary
RotateRight Zoom Linux, Mac OS X, Viewer Only for Windows Supports most compiled languages on ARM and x86 processors. Graphical and command-line statistical (event-based) profiler

Ada

C and C++

(see also "Multiple languages" section above)

Delphi

Java

JavaScript

.NET

OpenCL

PHP

Python

See also

References

  1. "CodeXL". Retrieved 26 September 2013.
  2. http://www.allinea.com/products/map
  3. https://code.google.com/p/aprof/
  4. http://www.CPUProfiler.com/
  5. http://www.lucierna.com/products-application-performance-management-apm/
  6. The RIO Project: Runtime Introspection and Optimization
  7. https://www.compuware.com/application-performance-management/dynatrace-enterprise.html
  8. http://www.igprof.org
  9. http://www.lw-tech.com
  10. "Smashing performance with OProfile" by Prasanna Panchamukhi
  11. "OpenPAT: The Open Performance Analysis Toolkit"
  12. "OpenPAT: Analysing Programs the Easy Way" by Dr Simon Spacey
  13. "Oracle Solaris Studio 12.4: Performance Analyzer". Oracle Corporation.
  14. http://www.bsc.es/computer-sciences/performance-tools/downloads
  15. "Pin: building customized program analysis tools with dynamic instrumentation"
  16. https://code.google.com/p/gperftools/
  17. https://code.google.com/p/shinyprofiler/
  18. http://www.stackify.com/
  19. http://ds.arm.com/ds-5/optimize/streamline-features
  20. "Profiling entire system activity with sysprof" by Ben Martin
  21. http://www.vampir.eu
  22. http://www.tu-dresden.de/zih/vampirtrace
  23. http://www.vi-hps.org/projects/score-p/
  24. http://msdn.microsoft.com/en-us/performance/default.aspx
  25. http://deleaker.com
  26. http://www.thewallsoft.com/codetune/
  27. http://www.embeddedprofiler.com/
  28. "Runtime Analysis and Memory Error Detection for C and C++". Retrieved 26 September 2013.
  29. http://www.pauldoo.com/proffy/
  30. http://www.codersnotes.com/sleepy
  31. https://github.com/xwlan/dprofiler
  32. http://www.delphitools.info/samplingprofiler/
  33. "AppPerfect Java Profiler". Retrieved 26 September 2013.
  34. "Garbage Collection Analysis". Retrieved 15 October 2014.
  35. "Performance Diagnostic Engine". Retrieved 15 October 2014.
  36. "Plumbr". Retrieved 11 November 2014.
  37. "Takipi". Retrieved 1 March 2014.
  38. http://nodetime.com/
  39. http://spy-js.com/
  40. http://ajax.dynatrace.com
  41. https://code.google.com/p/nprof/
  42. http://memprofiler.com/
  43. http://insightprofiler.productivity-boost.com/
  44. http://www.softwareverify.com/dotnetsuites.php#developer
  45. "26.4. The Python Profilers". Retrieved 26 September 2013.
  46. "FunkLoad". Retrieved 6 June 2014.

External links