C++ links: performance tools
- benchmark (Google)
- Celero
- hayai - the C++ benchmarking framework
- moodycamel::microbench
- geiger: A micro benchmark library in C++ that supports hardware performance counters
- Nonius
Examples:
- http://www.bfilipek.com/2016/01/micro-benchmarking-libraries-for-c.html
- http://www.bfilipek.com/2016/02/revisiting-old-benchmark-vector-of.html
- http://www.bfilipek.com/2016/05/google-benchmark-library.html
Systems Benchmarking Crimes - Gernot Heiser - https://www.cse.unsw.edu.au/~gernot/benchmarking-crimes.html
- MAQAO (Modular Assembly Quality Analyzer and Optimizer)
-
Agner Fog's test programs for measuring clock cycles and performance monitoring - http://www.agner.org/optimize/#testp
-
BCC - Tools for BPF-based Linux IO analysis, networking, monitoring, and more
- https://iovisor.github.io/bcc/
- https://github.com/iovisor/bcc
- https://github.com/iovisor/bpf-docs
- http://www.brendangregg.com/blog/2016-03-05/linux-bpf-superpowers.html
- http://www.brendangregg.com/blog/2016-03-28/linux-bpf-bcc-road-ahead-2016.html
- http://www.brendangregg.com/blog/2016-06-14/ubuntu-xenial-bcc-bpf.html
- https://qmonnet.github.io/whirl-offload/2016/09/01/dive-into-bpf/
-
Event Tracing for Windows (ETW) / Windows Performance Toolkit – Xperf
-
gperftools (originally Google Performance Tools)
"The fastest malloc we’ve seen; works particularly well with threads and STL. Also: thread-friendly heap-checker, heap-profiler, and cpu-profiler." -
gprof2dot
"Python script to convert the output from many profilers into a dot graph." -
Intel Architecture Code Analyzer (IACA) - https://software.intel.com/en-us/articles/intel-architecture-code-analyzer
-
Intel Performance Counter Monitor (PCM)
-
Likwid: Performance monitoring and benchmarking suite
-
perf
-
perf-tools
-
perf_events: The Unofficial Linux Perf Events Web-Page - http://web.eece.maine.edu/~vweaver/projects/perf_events/
-
perfmon2 - http://perfmon2.sourceforge.net/
- "Perfmon2 aims to be a portable interface across all modern processors. It is designed to give full access to a given PMU and all the corresponding hardware performance counters. Typically the PMU hardware implementations use a different number of registers, counters with different length and possibly other unique features, a complexity that the software has to cope with. Although processors have different PMU implementations, they usually use configurations registers and data registers. Perfmon2 provides a uniform abstract model of these registers and exports read/write operations accordingly."
-
Performance Application Programming Interface (PAPI)
-
pmu tools: Intel PMU profiling tools
- https://github.com/andikleen/pmu-tools
- https://github.com/andikleen/pmu-tools/wiki/toplev-manual
- pmu-tools part I - introduction, ocperf - http://halobates.de/blog/p/245
- pmu-tools part II - toplev - http://halobates.de/blog/p/262
-
sysdig
-
Heaptrack - A Heap Memory Profiler for Linux
-
memusage - profile memory usage of a program
-
Typegrind
a type preserving heap profiler for C++ - collects memory allocation information with type information
-
pprof - a tool for visualization and analysis of profiling data
https://github.com/google/pprof -
Flame Graphs