pyinstrument - 🚴 Call stack profiler for Python. Shows you why your code is slow!

  •        152

Pyinstrument supports Python 2.7 and 3.3+. Pyinstrument tells you which sections of code are making your software slow. It does this by observing your program's execution and then presenting a report that highlights the slow parts.



Related Projects

pyflame - Pyflame: A Ptracing Profiler For Python

  •    C++

Pyflame is a high performance profiling tool that generates flame graphs for Python. Pyflame is implemented in C++, and uses the Linux ptrace(2) system call to collect profiling information. It can take snapshots of the Python call stack without explicit instrumentation, meaning you can profile a program without modifying its source code. Pyflame is capable of profiling embedded Python interpreters like uWSGI. It fully supports profiling multi-threaded Python programs.Pyflame usually introduces significantly less overhead than the builtin profile (or cProfile) modules, and emits richer profiling data. The profiling overhead is low enough that you can use it to profile live processes in production.

The Visual Profiler


The Visual Profiler, VProf, is a tool for optimizing the performance of programs. Profile data are used to generate performance summaries sorted by source code line, by file, and by function. Summary data displayed with either a GUI or to the console.

stackimpact-python - StackImpact Python Profiler - Production-Grade Performance Profiler: CPU, memory allocations, blocking calls, exceptions, metrics, and more

  •    Python

StackImpact is a production-grade performance profiler built for both production and development environments. It gives developers continuous and historical code-level view of application performance that is essential for locating CPU, memory allocation and I/O hot spots as well as latency bottlenecks. Included runtime metrics and error monitoring complement profiles for extensive performance analysis. Learn more at Learn more on the features page (with screenshots).

plop - Python Low-Overhead Profiler

  •    Python

Plop is a stack-sampling profiler for Python. Profile collection can be turned on and off in a live process with minimal performance impact. Plop is currently a work in progress and pretty rough around the edges, so be prepared to run into bugs and extremely unrefined interfaces (which are likely to change in backwards-incompatible ways in future releases).

coz - Coz: Causal Profiling

  •    C++

Coz is a new kind of profiler that unlocks optimization opportunities missed by traditional profilers. Coz employs a novel technique we call causal profiling that measures optimization potential. This measurement matches developers' assumptions about profilers: that optimizing highly-ranked code will have the greatest impact on performance. Causal profiling measures optimization potential for serial, parallel, and asynchronous programs without instrumentation of special handling for library calls and concurrency primitives. Instead, a causal profiler uses performance experiments to predict the effect of optimizations. This allows the profiler to establish causality: "optimizing function X will have effect Y," exactly the measurement developers had assumed they were getting all along. Full details of Coz are available in our paper, Coz: Finding Code that Counts with Causal Profiling (pdf), SOSP 2015, October 2015 (recipient of a Best Paper Award).

rbspy - Sampling profiler for Ruby

  •    Rust

Have a running Ruby program that you want to profile without restarting it? Want to profile a Ruby command line program really easily? You want rbspy! rbspy can profile any Ruby program just by running 1 simple command. rbspy lets you profile Ruby processes that are already running. You give it a PID, and it starts profiling. It's a sampling profiler, which means it's low overhead and safe to run in production.

Chronos .Net Performance Profiler

  •    DotNet

Free .Net Performance Profiler

gae_mini_profiler - A ubiquitous mini-profiler for Google App Engine, inspired by mvc-mini-profiler

  •    Javascript

gae_mini_profiler is a quick drop-in WSGI app that provides ubiquitous profiling of your existing GAE projects. It exposes RPC statistics and CPU profiling output for users of your choosing on your production site. Only requests coming from users of your choosing will be profiled, and others will not suffer any performance degradation, so you can use this profiler to learn about production performance without stressing about slowing users down. See screenshots and features below.This project is heavily inspired by the Stack Exchange team's impressive mini-profiler.

goappmonitor - Golang application performance data monitoring.

  •    Go

Golang application performance data monitoring.GoAppMonitor is a library which provides a monitor on your golang applications. It contains system level based monitoring and business level monitoring(custom monitoring).Just add the repository into your apps and register what you want to monitoring.

prophiler - PHP Profiler & Developer Toolbar (built for Phalcon)

  •    PHP

Generally it makes sense to initialize the profiler as soon as possible, to measure as much execution time as you can. You should initialize the profiler in your front-controller or the bootstrap file right after requiring the Composer autoloader. To visualize the profiling results, you have to initialize and render the Prophiler Toolbar. This component takes care for rendering all results of the profiler benchmarks and other data collectors. Put that at the end of the front-controller.


  •    C

Valgrind is an award-winning instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile your programs in detail. You can also use Valgrind to build new tools.

uprofiler - [NOT MAINTAINED ANYMORE] Lightweight profiler for PHP (based on facebook/xhprof) -- use Blackfire instead

  •    PHP

WARNING: This project is not maintained anymore and does not work on PHP 7+. If you are looking for a PHP profiler, you can have a look at (the free version has more features and a better UI than the ones provided by this project). uprofiler is a hierarchical profiler for PHP. It reports function-level call counts and inclusive and exclusive metrics such as wall (elapsed) time, CPU time and memory usage. A function's profile can be broken down by callers or callees. The raw data collection component is implemented in C as a PHP Zend extension called uprofiler. uprofiler has a simple HTML based user interface (written in PHP). The browser based UI for viewing profiler results makes it easy to view results or to share results with peers. A callgraph image view is also supported.


  •    C

OProfile is a system-wide profiler for Linux systems, capable of profiling all running code at low overhead. It leverages the hardware performance counters of the CPU to enable profiling of a wide variety of interesting statistics, which can also be used for basic time-spent profiling. All code is profiled: hardware and software interrupt handlers, kernel modules, the kernel, shared libraries, and applications.

BOLT - Binary Optimization and Layout Tool - A linux command-line utility used for optimizing performance of binaries

  •    C++

BOLT is a post-link optimizer developed to speed up large applications. It achieves the improvements by optimizing application's code layout based on execution profile gathered by sampling profiler, such as Linux perf tool. BOLT can operate on any binary with a symbol table, but for maximum gains it utilizes relocations saved by a linker (--emit-relocs). An overview of the ideas implemented in BOLT along with a discussion of its potential and current results is available in an arXiv paper. NOTE: current support is limited to non-PIE X86-64 and AArch64 ELF binaries.

Profiler Repliator by for SQL Server Performance Testing


I've developed a small application that will help you test the performance of you SQL engine. the application simply retrieve your Queries from a Pre-set Profiler table and start replicate this in multithreading mode with you set configuration to brute the destination database...

Database Profiler


The Database Profiler project addresses daily problems of business intelligence or database migration projects. Simply in all projects that use foreign databases with an unknown content. Usually there are inconsitencies in source databases, which lead to an unpredictable impl...

riemann-jvm-profiler - Sends stacktrace-level performance data from a JVM process to Riemann.

  •    Clojure

Riemann-jvm-profiler requires no changes to your codebase. You'll need a Riemann server with the websocket/HTTP server (ws-server) accessible from each JVM process. The default Riemann websocket port is 5556.You can add riemann-jvm-profiler artifact to your Maven or Leiningen project via Clojars, and somewhere in your application startup code, invoke the profiler programmatically.

flask-profiler - a flask profiler which watches endpoint calls and tries to make some analysis.

  •    Python

In short, if you are curious about what your endpoints are doing and what requests they are receiving, give a try to flask-profiler. With flask-profiler's web interface, you can monitor all your endpoints' performance and investigate endpoints and received requests by drilling down through filters.