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
    OProfile
    perf
    • free software
    Valgrind (cachegrind, callgrind)
    • free software
    Apple Instruments
    • part of XCode
    NVIDIA Nsight Compute
    • profiling for NVIDIA GPUs (architectures: Pascal, Volta, Turing)
    • supplants NVIDIA Visual Profiler
    DTrace
    • free software
    Optick
    • instrumentation-based and sampling-based profiling
    • GPU counters
    GlowCode
    SmartBear AQTime
    Arm MAP
    Oracle Performance Analyzer
    Easy Profiler

    Benchmarking Libraries / Frameworks Libraries / Frameworks Libraries

    Google Benchmark
    • Apache-2.0
    gperftools

    (originally Google Performance Tools)

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