Skip to content

Curated list of performance assets, such as links to profilers, performance analysis tools, tips for better performance, scripts for anything related to performance.

Notifications You must be signed in to change notification settings

Perfexionists/perf-hub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

33 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Performance Assets Hub

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.

Table of Contents

Profiling

Generic

  • 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.

C/C++

  • 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.

Java

  • 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.

Python

  • 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.

C#

  • 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.

Web

  • 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.

Go

  • fgprof: a sampling Go profiler for On-CPU and Off-cpu time.

Energy

  • sysrapl: an experimental eBPF-based profiler written by our group's HarryMichal.
  • Kepler: eBPF-based profiler and ML combination that estimates workload energy consumption.

Instrumentation

eBPF

Other Frameworks

  • 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.

Benchmarking

Benchmarking Tools

  • BenchExec: a framework for reliable benchmarking and resource measurements.
  • pycobench: a fork of ondrik/pycobench a lightweight benchmarking tool from our Perfexionists group.

Benchmarks

Workload Generators

Fuzz Testing

  • 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.

Other Performance Tools

Performance Managers

  • 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.

Performance Monitoring

  • Kieker: a monitoring framework for application performance monitoring and dynamic software analysis.
  • likwid: a performance monitoring and benchmarking suite.

Other Analysers

  • 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.

Visualizations

  • 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

  • Static Analysis Tools: a curated list of static analysis tools and linters for all programming languages.

Resource Bounds Analysis

  • 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.

Worst-case Execution Time

  • 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.

Other Assets

Allocators

  • 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() and operator new; a fast multi-threaded implementation.

Recommended Blogs And Sites

Other assets

  • 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.

Contributing

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.

About

Curated list of performance assets, such as links to profilers, performance analysis tools, tips for better performance, scripts for anything related to performance.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published