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.
- TimeToPic visualizes a log file. If system has logging facility, its output can be shown on visual timeline. Developer can see from visualization what is happening on log. Can be used for code and "logic" level analysis. There are version for Windows and Linux. Supports log sizes up to 1 Gigabyte.
- time (Unix) - can be used to determine the run time of a program, separately counting user time vs. system time, and CPU time vs. clock time.[1]
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 |
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++,Objective 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/open source (MIT) |
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) | |
dynamoRIO by RIO [3] | Linux, Windows | Dynamic binary instrumentation framework for the development of dynamic program analysis tools. | Free/open source - BSD | |
Dynatrace [4] | 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 |
Frida | Linux, Windows, Mac, iOS, Android, QNX | Any | Scriptable dynamic binary instrumentation toolkit | Free/open source (LGPL) |
FusionReactor | Linux, Windows, Mac, AWS, Azure, Google Cloud | Java, Works with any Language supported by the JVM | Application Performance Management, Production safe Performance tools; Production Debugger, Production Java Profiler, Memory Profiler | Proprietary |
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) |
Intel Advisor[5] | Linux and Windows | C, C++ and Fortran | Vectorization (SIMD) optimization. Find hot loops, ID what is blocking vectorization, check for loop-carried dependencies, analyze memory access patterns and optimize stride and memory footprint. Includes cache aware roofline analysis. | Proprietary. Bundled as a part of Intel Parallel Studio.
Free licenses for open source developers, students, educators and academic researchers. |
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 |
LTTng (Linux Trace Toolkit Next Generation) | Linux | System software package for correlated tracing of kernel, applications and libraries | GPL/LGPL/MIT | |
OProfile[6] | 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 |
Oracle Solaris Studio Performance Analyzer[7] | Linux, Solaris | C, C++, Fortran, Java; MPI | Performance and memory profiler | Free |
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[8] | Linux, Windows, OSX, Android | Dynamic binary instrumentation system that allows users to create custom program analysis tools | Proprietary but free for non-commercial use | |
Rational PurifyPlus | AIX, Linux, Solaris, Windows | Performance profiling tool, memory debugger and code coverage tool | Proprietary | |
Scalasca [9] | Linux | C/C++, Fortran | Parallel trace analyser | Free/open source (BSD license) |
Shark by Apple | Mac OS X (discontinued with 10.7) | Performance analyzer | Free | |
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 Performance System® [10] | Linux, Mac, Windows, Solaris, AIX, HP-UX, Cray CNL | C++, C, Fortran, Java, Python | Supports both profiling and tracing, portable, multiple mechanisms for instrumentation ranging from automated source instrumentation, to compiler, linker, binary rewriting, and runtime instrumentation. Uses PAPI for hardware counters. Event based sampling as well as probe-based instrumentation is supported. Supports memory profiling, I/O profiling, creating wrapper libraries. Supports Spark, CUDA, OpenCL, OpenACC, MPI, pthread, OpenSHMEM, and OpenMP runtimes. Scalable 3D profile browser, paraprof, is a Java based GUI that ships with TAU. TAU Commander [11] builds on, and simplifies usage of TAU. | Open source BSD style license. |
Valgrind | Linux, OSX, Solaris, Android | 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) |
VTune Amplifier XE by Intel Corporation[12] | Linux, Windows | C, C++, C#, Fortran, .NET, Java, Python, Go, ASM Assembly | 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. Also available as a part of Intel Parallel Studio.
Free licenses for open source developers, students, educators and academic researchers. |
Windows Performance Analysis Toolkit by Microsoft[13] | 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 | |
VisualSim | Linux,OS X,Microsoft Windows | Supports C/C++/SystemC | Graphical modeling and Simulation platform to select, analyze and validate architecture of complex electronics systems for performance, power and reliability. | Proprietary |
C and C++
- Allinea MAP performance profiler supporting Linux platforms
- AppDynamics Application Performance Management solution for C/C++ applications via SDK
- IBM Rational Purify
- AQtime Pro Performance profiler and memory allocation debugger can be integrated into Microsoft Visual Studio, Embarcadero RAD Studio or can run as a stand-alone application.
- MTuner Memory profiliing, analysis and leak detection tool. Supports multiple platforms.
- Intel Parallel Studio contains Intel VTune Amplifier, which tunes both serial and parallel programs. It also includes Intel Advisor and Intel Inspector. Intel Advisor optimizes vectorization (use of SIMD instructions) and prototypes threading implementations. Intel Inspector detects and debugs races, deadlocks and memory errors.
- Parasoft Insure++[14] Provides a graphical tool that displays and animates memory allocations in real time to expose memory blowout, fragmentation, overuse, bottlenecks and leaks.
- Visual Studio Team System Profiler is Microsoft's commercial profiler
- VSXu has a built-in open source profiler for collecting data, call graphs with a generic data collection back end
Java
- inspectIT is an open-source application performance management (APM) solution for monitoring and analyzing software applications, available under the Apache License, Version 2.0 (ALv2).
- JConsole is the profiler which comes with the Java Development Kit
- JProfiler
- JRockit Mission Control, a profiler with low overhead.
- Netbeans Profiler, a profiler integrated into the NetBeans IDE (internally uses jvisualvm profiler)
- Pinpoint[15] is an open source APM (Application Performance Management) tool for large-scale distributed systems written in Java.
- Plumbr, Java application performance monitoring with automated root cause detection. Links memory leaks, GC inefficiency, slow database and external web service calls, locked threads, and other performance problems to the line in source code that causes them.[16]
- Takipi, production debugging, profiling and exceptions tracking.[17]
- VisualVM is a visual tool integrating several commandline JDK tools and lightweight profiling capabilities. It is bundled with the Java Development Kit since version 6, update 7.
JavaScript
- Firebug is a Firefox plug-in for web development, also has a profiler for JavaScript.
- Microsoft Visual Studio AJAX Profiling Extensions is a free profiling tool for JavaScript by Microsoft Research.
.NET
- CLR Profiler is a free memory profiler provided by Microsoft for CLR applications.
- GlowCode is a performance and memory profiler for .NET applications using C# and other .NET languages. It identifies time-intensive functions and detects memory leaks and errors in native, managed and mixed Windows x64 and x86 applications.
- Visual Studio
PHP
See also
- Performance analysis
- Memory debugger (includes list of memory profilers)
References
- ↑ "CodeXL". Retrieved 26 September 2013.
- ↑ "MAP - the C, C++ and F90 profiler for high performance and multithreaded Linux applications". Allinea.com. Retrieved 5 June 2015.
- ↑ "The RIO Project". Groups.csail.mit.edu. 1 December 2001. Retrieved 5 June 2015.
- ↑
- ↑ "Intel® Advisor | Intel® Software". software.intel.com. Retrieved 2016-09-08.
- ↑ "Smashing performance with OProfile". Ibm.com. 16 October 2003. Retrieved 5 June 2015.
- ↑ "Oracle Solaris Studio 12.4: Performance Analyzer". Oracle Corporation.
- ↑ "Pin - A Dynamic Binary Instrumentation Tool | Intel® Developer Zone". Software.intel.com. 21 May 2013. Retrieved 5 June 2015.
- ↑ "Scalasca". Retrieved 26 January 2016.
- ↑ "TAU Performance System". Retrieved 19 June 2017.
- ↑ "TAU Commander". Retrieved 19 June 2017.
- ↑ "Intel® VTune™ Amplifier | Intel® Software". software.intel.com. Retrieved 2016-09-08.
- ↑ "MSDN-the microsoft developer network". Msdn.microsoft.com. 19 May 2015. Retrieved 5 June 2015.
- ↑ "Runtime Analysis and Memory Error Detection for C and C++". Retrieved 26 September 2013.
- ↑ "GitHub - naver/pinpoint: Pinpoint is an open source APM (Application Performance Management) tool for large-scale distributed systems written in Java.". Retrieved 11 November 2016.
- ↑ "Plumbr". Plumbr.eu. Retrieved 29 February 2016.
- ↑ "Takipi". Takipi.com. Retrieved 1 March 2014.
External links
- Performance Analysis Tools, article from the Lawrence Livermore National Laboratory
This article is issued from
Wikipedia.
The text is licensed under Creative Commons - Attribution - Sharealike.
Additional terms may apply for the media files.