List of performance analysis tools

Last updated

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

Contents

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/manufacturerOSCompiler/languageWhat it doesLicense
AppDynamics by Cisco Linux, Windows, iOS, Android, Azure, AWS, AIX.NET, Java, PHP, HTML5, ObjectiveC/iOS, Java/Android, C/C++, Apache, Nginx, Cassandra, DataBasesSee Application Performance Management.Proprietary
Applications Manager by ManageEngine Linux, WindowsJava, PHP, Ruby, .NET, .NET Core, Node.js.See Application Performance Management.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 functionsPerformance profiler and memory/resource debugging toolset.Proprietary
Arm MAP LinuxC, C++, Fortran/Fortran90 and Python 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
CodeAnalyst by AMD Linux, WindowsC, C++, Objective C .NET, Java (works at the executable level)AMD uProf supersedes CodeAnalyst and CodeXL for CPU and Power profiling on AMD processors.

GUI based code profiler; does only basic timer-based profiling on Intel processors. Based on OProfile.

Free/open source (GPL) or proprietary
AMD CodeXL by AMD Linux, WindowsFor GPU profiling and debugging: OpenCL.A tool suite for GPU profiling, GPU debugger and a static kernel analyzer.Free/open source (MIT)
AMD uProf by AMD Linux, WindowsC, C++, .NET, Java, FortranCode profiler, does sampling based profiling on AMD processors.Proprietary
DevPartner by Borland / Micro Focus .NET, JavaTest suite that automatically detects and diagnoses software defects and performance problems.Proprietary
DTrace by Sun Microsystems Solaris, Linux, BSD, macOSComprehensive dynamic tracing framework for troubleshooting kernel and application problems on production systems in real time.Free/open source (CDDL)
dynamoRIO by RIOLinux, WindowsDynamic binary instrumentation framework for the development of dynamic program analysis tools.Free/open source - BSD
Dynatrace Linux, Windows, iOS, Android, Azure, AWS, AIX, Solaris, HP/UX, zOS, zLinux.NET, Java, PHP, HTML5, Ajax (for web sites), Objective-C/iOS, Java/Android, C/C++, CICS, Apache, Nginx, Cassandra, Hadoop, MongoDB, HBaseSee Application Performance Management.Proprietary
Extrae Linux, AndroidPrimarily C/C++/Fortran, but can profile any application linking against supported parallel libraries (e.g. MPI4PY)HPC performance analysis tool with viewer and supporting utilities. Primarily designed for parallel applications with support for MPI, OpenMP, CUDA, OpenCL, pthreads, and OmpSs. Additional features include user function tracing and hardware event capture via PAPI.Free/open source - LGPL-2.1
FusionReactor Linux, Windows, macOS, AWS, Azure, Google CloudJava, ColdFusion, Apache, MongoDB Works with any Language supported by the JVM Performs Application Performance Management and Performance and Root Cause Analysis. Combines APM and Low Level Developer Style Tooling; also includes a debugger and Java, memory, thread, and CPU profilers.Proprietary
GlowCode Windows64-bit and 32-bit applications, C, C++, .NET, and dlls generated by any language compiler.Performance and memory profiler that identifies time-intensive functions and detects memory leaks and errors.Proprietary
gprof Linux/UnixAny 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 that 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)
HWPMC FreeBSD 6.0+System-level and process-level counting and sampling hardware performance monitoring framework supporting multiple architectures.BSD
Instana Linux, Windows, iOS, Android, Azure, AWS, AIX, Solaris, HP/UX, zOS, zLinux.NET, .Net core, Java, PHP, Ruby, Python, Crystal, Scala, Kotlin, Clojure, Haskell, Node.js, Web Browser, Apache, Nginx, Cassandra, Hadoop, MongoDB, Elasticsearch, KafkaSee Application Performance Management.Proprietary
Instruments with Xcode macOSC, C++, Objective-C/C++, Swift, Cocoa apps.Instruments shows a time line displaying any event occurring in the application, such as CPU activity variation, memory allocation, and network and file activity, together with graphs and statistics.

Group of events are monitored by selecting specific instruments from: File Activity, Memory Allocations, Time Profiler, GPU activity etc. For system wide impact of the executable: System Trace, System usage, Network Usage, Energy log etc. are useful.

Free. Proprietary. Bundled with Xcode, which is also free.
Intel Advisor Linux and Windows. Viewer only on macOS.C, C++, Data Parallel C++ and FortranA collection of design and analysis tools - vectorization (SIMD) optimization, thread prototyping, automated roofline analysis, offload modeling and flow graph analysisFreeware and Proprietary. Available as part of Intel oneAPI Base Toolkit.
Linux Trace Toolkit (LTT)LinuxRequires patched kernelCollects 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)LinuxSystem software package for correlated tracing of kernel, applications and libraries.GPL/LGPL/MIT
OProfile LinuxProfiles 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 Linux, SolarisC, C++, Fortran, Java; MPI Performance and memory profiler.Proprietary freeware
perf tools Linux kernel 2.6.31+Sampling profiler with support of hardware events on several architectures.GPL
Performance Application Programming Interface (PAPI)VariousLibrary for hardware performance counters on modern microprocessors.
Pin by Intel Linux, Windows, macOS, AndroidDynamic binary instrumentation system that allows users to create custom program analysis tools.Proprietary but free for non-commercial use
Rational PurifyPlus AIX, Linux, Solaris, WindowsPerformance profiling tool, memory debugger and code coverage tool.Proprietary
Scalasca LinuxC/C++, FortranParallel trace analyser.Free/open source (BSD license)
Shark by ApplemacOS (discontinued with 10.7)Performance analyzer.Proprietary freeware
SuperluminalWindows, Xbox One, PlayStationC++, Rust, .NETPerformance profiler (sampled or instrumented) and analyzer, focused on game development.Proprietary
Systemtap LinuxProgrammable 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
Valgrind Linux, macOS, Solaris, AndroidAny, including assemblerSystem 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 Profiler by Intel Corporation

(formerly VTune Amplifier)

Linux, Windows, viewer only for macOSC, C++, C#, Data Parallel C++ (DPC++), Fortran, .NET, Java, Python, Go, ASM AssemblyA collection of profiling analyses implemented with sampling, instrumentation and processor trace technologies.  Includes Hotspot, Threading, HPC, I/O, FPGA, GPU, System, Throttling and Microarchitecture analyses.Freeware and Proprietary. Also available as a part of Intel oneAPI base toolkit.
Windows Performance Analysis Toolkit by Microsoft Windows, Linux, AndroidSystem-wide primary Windows performance analysis tool including CPU Sampling, CPU Scheduling, Disk and everything. Can open Linux LTTng and Perf Cpu Sampling traces; as well as Android Perfetto traces via pluginsProprietary freeware with Linux / Android Open Source plugins
RotateRight ZoomLinux, macOS, Viewer Only for WindowsSupports most compiled languages on ARM and x86 processors.Graphical and command-line statistical (event-based) profiler.
VisualSim Linux, macOS, Microsoft WindowsSupports C/C++/SystemCGraphical modeling and Simulation platform to select, analyze and validate architecture of complex electronics systems for performance, power and reliability.Proprietary

C and C++

Java

JavaScript

.NET

PHP

See also

Related Research Articles

<span class="mw-page-title-main">Debugger</span> Computer program used to test and debug other programs

A debugger or debugging tool is a computer program used to test and debug other programs. The main use of a debugger is to run the target program under controlled conditions that permit the programmer to track its execution and monitor changes in computer resources that may indicate malfunctioning code. Typical debugging facilities include the ability to run or halt the target program at specific points, display the contents of memory, CPU registers or storage devices, and modify memory or register contents in order to enter selected test data that might be a cause of faulty program execution.

<span class="mw-page-title-main">Valgrind</span> Programming tool for profiling, memory debugging and memory leak detection

Valgrind is a programming tool for memory debugging, memory leak detection, and profiling.

In software engineering, profiling is a form of dynamic program analysis that measures, for example, the space (memory) or time complexity of a program, the usage of particular instructions, or the frequency and duration of function calls. Most commonly, profiling information serves to aid program optimization, and more specifically, performance engineering.

The Apple Developer Tools are a suite of software tools from Apple to aid in making software dynamic titles for the macOS and iOS platforms. The developer tools were formerly included on macOS install media, but are now exclusively distributed over the Internet. As of macOS 10.12, Xcode is available as a free download from the Mac App Store.

Dynamic program analysis is analysis of computer software that involves executing the program in question. Dynamic program analysis includes familiar techniques from software engineering such as unit testing, debugging, and measuring code coverage, but also includes lesser-known techniques like program slicing and invariant inference. Dynamic program analysis is widely applied in security in the form of runtime memory error detection, fuzzing, dynamic symbolic execution, and taint tracking.

Intel oneAPI DPC++/C++ Compiler and Intel C++ Compiler Classic are Intel’s C, C++, SYCL, and Data Parallel C++ (DPC++) compilers for Intel processor-based systems, available for Windows, Linux, and macOS operating systems.

BoundsChecker is a memory checking and API call validation tool used for C++ software development with Microsoft Visual C++. It was created by NuMega in the early 1990s. When NuMega was purchased by Compuware in 1997, BoundsChecker became part of a larger tool suite, DevPartner Studio. Micro Focus purchased the product line from Compuware in 2009. Comparable tools include Purify, Insure++ and Valgrind.

<span class="mw-page-title-main">Microsoft Silverlight</span> Application framework for writing and running rich Internet applications

Microsoft Silverlight is a discontinued application framework designed for writing and running rich internet applications, similar to Adobe's runtime, Adobe Flash. While early versions of Silverlight focused on streaming media, later versions supported multimedia, graphics, and animation, and gave support to developers for CLI languages and development tools. Silverlight was one of the two application development platforms for Windows Phone, but web pages using Silverlight did not run on the Windows Phone or Windows Mobile versions of Internet Explorer, as there was no Silverlight plugin for Internet Explorer on those platforms.

DevPartner is a set of software development and testing tools developed by NuMega, acquired by Compuware in 1997, which on June 1, 2009 sold it to Micro Focus. There are two versions: one for native and .NET Windows applications, and another for Java applications. It is currently sold by Micro Focus.

Intel Fortran Compiler, as part of Intel OneAPI HPC toolkit, is a group of Fortran compilers from Intel for Windows, macOS, and Linux.

CLR Profiler is a free and open-source memory profiler for the .NET Framework from Microsoft. It allows the user to investigate the contents of the managed heap, the behavior of the garbage collector, and the allocation patterns of the program being profiled.

<span class="mw-page-title-main">Visual Studio</span> Code editor and IDE

Visual Studio is an integrated development environment (IDE) developed by Microsoft. It is used to develop computer programs including websites, web apps, web services and mobile apps. Visual Studio uses Microsoft software development platforms such as Windows API, Windows Forms, Windows Presentation Foundation (WPF), Windows Store and Microsoft Silverlight. It can produce both native code and managed code.

<span class="mw-page-title-main">Web development tools</span> Software used to test the UI of a website or web application

Web development tools allow web developers to test, modify and debug their websites. They are different from website builders and integrated development environments (IDEs) in that they do not assist in the direct creation of a webpage, rather they are tools used for testing the user interface of a website or web application.

Intel Parallel Studio XE was a software development product developed by Intel that facilitated native code development on Windows, macOS and Linux in C++ and Fortran for parallel computing. Parallel programming enables software programs to take advantage of multi-core processors from Intel and other processor vendors.

Intel Inspector is a memory and thread checking and debugging tool to increase the reliability, security, and accuracy of C/C++ and Fortran applications.

<span class="mw-page-title-main">AQtime</span>

AQtime is a performance profiler and memory/resource debugging toolset developed by SmartBear Software. It is integrated into Microsoft Visual Studio, Visual Studio Test Projects, and Embarcadero RAD Studio, which allows analyzing the application without leaving the development environment.

Intel Advisor is a design assistance and analysis tool for SIMD vectorization, threading, memory use, and GPU offload optimization. The tool supports C, C++, Data Parallel C++ (DPC++), Fortran and Python languages. It is available on Windows and Linux operating systems in form of Standalone GUI tool, Microsoft Visual Studio plug-in or command line interface. It supports OpenMP. Intel Advisor user interface is also available on macOS.

CodeXL was an open-source software development tool suite which included a GPU debugger, a GPU profiler, a CPU profiler, a graphics frame analyzer and a static shader/kernel analyzer.

References

  1. "CodeXL". Archived from the original on 19 September 2013. Retrieved 26 September 2013.
  2. "Performance - Firefox Developer Tools | MDN". MDN Web Docs. Retrieved 27 October 2021.