Curated list of performance assets, such as links to profilers, performance analysis tools, tips for better performance, scripts for anything related to performance.
- π recommended tool.
- π΄ old tool (possibly not maintained anymore) with last commit more that 5 years ago.
- Performance Assets Hub
- bytehound: a memory profiler for Linux.
- ftrace: a tracer for debugging and/or analyzing latencies and performance issues outside of user-space; focused on kernel.
- perf: linux profiling with performance counters; state-of-the-art for profiling in Linux; we recommend to read Brendan Gregg's perf Examples.
- perf-tools: a performance analysis tools based on Linux perf_events and ftrace.
- firefox Profiler: a web app for Firefox performance analysis; you can import perf profiles (among other) and use it as a GUI.
- strace: a diagnostic, debugging and instructional userspace utility for linux; used for monitoring between processes and linux kernel.
- Intel Advisor: a design and analysis tool for developing performant code; for efficient CPU Code, GPU offload, etc.
- Intel VTune Profiler: profiler for many languages, including C, C++, C#, Python, etc.
- Coz: a profiler for C/C++ and Rust code that can measure the optimization potential of code.
- gprof: a hybrid instrumentation and sampling-based performance profiler.
- massif: a heap profiler from Valgrind tool suite.
- OProfile: an open-source statistical profiler for Linux systems with low overhead.
- soot: a framework for analyzing and transforming Java and android applications.
- SootUp: new rehaul of the soot static analysis framework.
- YourKit: low overhead profiler for Java EE and Jave SE platforms.
- perf-map-agent: an agent that generates map of symbols for perf for JIT compiled methods.
- memray: π a memory profiler for python.
- Scalene: a Python CPU+GPU+memory profiler with AI-powered optimization proposals.
- py-spy: a light-weight sampling profiler for Python programs.
- Fil: a memory profiler for Python on Linux and MacOS.
- pyinstrument: a call-stack profiler for Python;
- pprofile: line-granularity, thread-aware, deterministic and statistic pure-python profiler.
- Austin: a python frame-stack sampler for CPython.
- perfview: a CPU and memory performance analysis tool mainly for windows and .NET applications.
- YourKit: easy-to-use performance and memory .NET profiler for Windows, Linux an macOS.
- Lighthouse: an open-source, automated tool for improving quality of web pages (includes performance analysis).
- firefox Profiler: a web app for Firefox performance analysis; you can import perf profiles (among other) and use it as a GUI.
- fgprof: a sampling Go profiler for On-CPU and Off-cpu time.
- sysrapl: an experimental eBPF-based profiler written by our group's HarryMichal.
- Kepler: eBPF-based profiler and ML combination that estimates workload energy consumption.
- Andrii Nakryiko's Blog: a blog with good tutorials for starting with eBPF.
- Awesome eBPF: a curated list of awesome projects related to eBPF.
- eBPF: a main hub for starting with eBPF.
- Jalangi: a framework for writing dynamic analyses for JavaScript.
- Lunatik: a framework for scripting the linux kernel with lua.
- PIN: a dynamic binary instrumentation tool for C/C++ programs.
- SystemTap: a dynamic binary instrumentation tools.
- Triton: a dynamic binary analysis library that allows one to build own program analysis tools.
- javassist: a java bytecode engineering toolkit.
- PyVyPR: a prototype framework for creating runtime analysis of Python code.
- LTTng: an open source tracing framework for Linux.
- BenchExec: a framework for reliable benchmarking and resource measurements.
- pycobench: a fork of ondrik/pycobench a lightweight benchmarking tool from our Perfexionists group.
- CORAL-2 Benchmarks: a benchmark by advanced simulation and computing group.
- Renaissance Suite: a modern, open, and diversified benchmark suite for the JVM.
- Defects4J: a database of real faults.
- fio: Flexible I/O Tester: flexible benchmarking for filesystems.
- Bonnie++: benchmark suite focused on file system performance.
- Bonnie: an original benchmark suite focused on UNIX file system performance.
- AFL π΄ americal fuzzy lop: an original security-oriented fuzzer (many fuzzers build upon this).
- badger: π΄ a complexity analysis with fuzzing and symbolic execution.
- perffuzz: π΄ automatic generation of pathological inputs for C/C++ programs; a performance fuzztesting tool.
- perun: π our performance control system that manages profiles, automatization and history.
- gopper/hopper: a collection of scripts for performance history analysis of Java programs.
- newrelic: continuous monitoring of programs.
- PerfCI: a toolchain for automated performance testing under Continuous Integration.
- prometheus: a monitoring system and a time-series database.
- CATTO: commit-adaptive tool for test-optimizations and plugin for IntellijIdea.
- Kieker: a monitoring framework for application performance monitoring and dynamic software analysis.
- likwid: a performance monitoring and benchmarking suite.
- CCprof: a lightweight detection of cache conflicts.
- Feather: a featherlight on-the-fly false-sharing detection tools.
- Linux Crisis Tools: a blogpost from Brendan Gregg, which list useful tools for performance monitoring or debugging.
- SyncPerf: a lightweight profiler to detect and categorize root causes of synchronization related performance issues in multithreaded programs.
- flamescope: a visualization tool for exploring different time ranges as Flame Graphs.
- hotspot: the linux perf GUI for performance analysis; standalone tool for interpreting results of perf.
- pprof: a tool for visualization and analysis of profiling data in perf or
*.proto
format.
- Static Analysis Tools: a curated list of static analysis tools and linters for all programming languages.
- CoFloCo: a static analysis tool for automatic symbolic complexity of upper and lower bounds of imperative and recursive programs.
- FBInfer: a static analysis tool that includes measuring of complexity of code.
- Bound-T: static analysis of the machine code that computes upper bounds on the execution time and stack usage of embedded programs.
- Chronos: a timing analysis of embedded software.
- Hoard: a fast, scalable memory-efficient memory allocator; corss-platform.
- jemalloc: a general purpose malloc implementation with fragmentation avoidance and scalable concurrency support.
- TCMalloc: a google's customized implementation of
malloc()
andoperator new
; a fast multi-threaded implementation.
- Accidentaly Quadratic: a blog with various performance bugs found in production and applications.
- Big-O Cheat Sheet: a page that covers the space and time Big-O complexities of common algorithms used in Computer Science.
- Brendan Gregg's Homepage: a Brendan Gregg's Homepage with lots of information about performance analysis, eBPF, perf, etc.
- Peak Memory Usage of a Linux Process: a simple guide how to measure peak memory of your applications.
- bootlin: cross reference for linux kernel sources and headers.
- Linux Kernel Syscall Tables: a table of syscalls for linux kernel versions.
- Font Awesome: a lots of free icons to be used in visualizations.
- Highcharts.js: a highly scalable javascript library for building visualizations of the data.
- plotly: a library supporting many programming languages (JS, Python, etc.) for building visualizations of the data.
- seaborn: a matplotlib-based Python visualization library for building lightweight visualizations of the data.
- RefactoringMiner: a library/API for detecting refactorings in history of Java projects.
- RefDiff: a tool to mine refactorings in the commit history of git repositories.
If you would like to contribute, please send us a PR, we will review your addition, and if deemed suitable for our list we will include it.