Profiling/Benchmarking Tools C++ Profilers C++ Profilers

    Profiling Applications Applications

    GNU Profiler (gprof)
    • ubiquitous
    • free software
    • some IDEs can present gprof results in a GUI
    Intel VTune Profiler
    • free of charge
    • GUI & command line interface
    • sampling-based profiling
    • hardware event sampling for Intel chips
    • locks & waits analysis
    • memory access analysis
    • storage analysis
    • integrates with MS Visual Studio
    Coz – Causal Profiler
    • unique approach to profiling
    • creates causal profile: "optimizing function X will have effect Y"
    • profile is based on performance experiments
    • program is partitioned into parts based on progress points (that are set in source code)
    • no additional instrumentation of source code required
    • free software
    Valgrind (cachegrind, callgrind)
    • free software

    part of the ADK (Windows Assessment and Deployment Kit)

    Apple Instruments
    • part of XCode
    NVIDIA Nsight Compute
    • profiling for NVIDIA GPUs (architectures: Pascal, Volta, Turing)
    • supplants NVIDIA Visual Profiler
    AMD uProf
    • sampling profiler for AMD CPUs and some AMD GPUs
    • instruction based sampling, micro-architecture analysis,
    • call stack sampling, timer-based profiling
    • cache analysis, power profiling
    • free software
    Very Sleepy
    • sampling CPU profiler
    • support for MinGW
    • late symbol resolution
    • instrumentation-based and sampling-based profiling
    • GPU counters
    SmartBear AQTime
    Arm MAP
    Oracle Performance Analyzer
    Easy Profiler

    Benchmarking Libraries / Frameworks Libraries / Frameworks Libraries

    Google Benchmark
    • Apache-2.0

    (originally Google Performance Tools)

    • BSD-3-Clause
    • high-performance multithreaded malloc()
    • heap checker
    • heap profiler
    • cpu profiler
    • Apache-2.0
    • zlib
    simple, cross-platform microsecond-precision timer class
    • BSL-1.0
    unit testing framework that also includes timing primitives