All Projects → nschloe → Perfplot

nschloe / Perfplot

Licence: gpl-3.0
Performance plots for Python code

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Perfplot

Sparklint
A tool for monitoring and tuning Spark jobs for efficiency.
Stars: ✭ 316 (-49.76%)
Mutual labels:  performance-analysis
Apm Agent Dotnet
Elastic APM .NET Agent
Stars: ✭ 418 (-33.55%)
Mutual labels:  performance-analysis
Watchdoginspector
Shows your current framerate (fps) in the status bar of your iOS app
Stars: ✭ 497 (-20.99%)
Mutual labels:  performance-analysis
Jmeter Maven Plugin
The JMeter Maven Plugin
Stars: ✭ 362 (-42.45%)
Mutual labels:  performance-analysis
Atop
System and process monitor for Linux
Stars: ✭ 381 (-39.43%)
Mutual labels:  performance-analysis
Why Did You Update
💥 Puts your console on blast when React is making unnecessary updates.
Stars: ✭ 4,089 (+550.08%)
Mutual labels:  performance-analysis
Stackimpact Go
DEPRECATED StackImpact Go Profiler - Production-Grade Performance Profiler: CPU, memory allocations, blocking calls, errors, metrics, and more
Stars: ✭ 276 (-56.12%)
Mutual labels:  performance-analysis
S3 Benchmark
Measure Amazon S3's performance from any location.
Stars: ✭ 525 (-16.53%)
Mutual labels:  performance-analysis
Scalene
Scalene: a high-performance, high-precision CPU, GPU, and memory profiler for Python
Stars: ✭ 4,819 (+666.14%)
Mutual labels:  performance-analysis
Goappmonitor
Golang application performance data monitoring.
Stars: ✭ 478 (-24.01%)
Mutual labels:  performance-analysis
Loopy
A code generator for array-based code on CPUs and GPUs
Stars: ✭ 367 (-41.65%)
Mutual labels:  performance-analysis
Exthouse
Analyze the impact of a browser extension on web performance.
Stars: ✭ 377 (-40.06%)
Mutual labels:  performance-analysis
Sitespeed.io
Sitespeed.io is an open source tool that helps you monitor, analyze and optimize your website speed and performance, based on performance best practices advices from the coach and collecting browser metrics using the Navigation Timing API, User Timings and Visual Metrics (FirstVisualChange, SpeedIndex & LastVisualChange).
Stars: ✭ 4,255 (+576.47%)
Mutual labels:  performance-analysis
Sparklens
Qubole Sparklens tool for performance tuning Apache Spark
Stars: ✭ 345 (-45.15%)
Mutual labels:  performance-analysis
Inspectit
inspectIT is the leading Open Source APM (Application Performance Management) tool for analyzing your Java (EE) applications.
Stars: ✭ 513 (-18.44%)
Mutual labels:  performance-analysis
Frontendwingman
Frontend Wingman, Learn frontend faster!
Stars: ✭ 315 (-49.92%)
Mutual labels:  performance-analysis
Performance
⏱ PHP performance tool analyser your script on time, memory usage and db query. Support Laravel and Composer for web, web console and command line interfaces.
Stars: ✭ 429 (-31.8%)
Mutual labels:  performance-analysis
Lighthouse
Automated auditing, performance metrics, and best practices for the web.
Stars: ✭ 23,903 (+3700.16%)
Mutual labels:  performance-analysis
Detoxinstruments
Detox Instruments is a performance–analysis and testing framework, designed to help developers profile their mobile apps in order to better understand and optimize their app's behavior and performance.
Stars: ✭ 513 (-18.44%)
Mutual labels:  performance-analysis
Pprof
pprof is a tool for visualization and analysis of profiling data
Stars: ✭ 4,990 (+693.32%)
Mutual labels:  performance-analysis

perfplot

PyPi Version PyPI pyversions GitHub stars PyPi downloads

Discord

gh-actions codecov LGTM Code style: black

perfplot extends Python's timeit by testing snippets with input parameters (e.g., the size of an array) and plotting the results.

For example, to compare different NumPy array concatenation methods, the script

import numpy as np
import perfplot

perfplot.show(
    setup=lambda n: np.random.rand(n),  # or setup=np.random.rand
    kernels=[
        lambda a: np.c_[a, a],
        lambda a: np.stack([a, a]).T,
        lambda a: np.vstack([a, a]).T,
        lambda a: np.column_stack([a, a]),
        lambda a: np.concatenate([a[:, None], a[:, None]], axis=1),
    ],
    labels=["c_", "stack", "vstack", "column_stack", "concat"],
    n_range=[2 ** k for k in range(25)],
    xlabel="len(a)",
    # More optional arguments with their default values:
    # logx="auto",  # set to True or False to force scaling
    # logy="auto",
    # equality_check=np.allclose,  # set to None to disable "correctness" assertion
    # show_progress=True,
    # target_time_per_measurement=1.0,
    # time_unit="s",  # set to one of ("auto", "s", "ms", "us", or "ns") to force plot units
    # relative_to=1,  # plot the timings relative to one of the measurements
    # flops=lambda n: 3*n,  # FLOPS plots
)

produces

Clearly, stack and vstack are the best options for large arrays.

(By default, perfplot asserts the equality of the output of all snippets, too.)

Benchmarking and plotting can be separated. This allows multiple plots of the same data, for example:

out = perfplot.bench(
    # same arguments as above (except the plot-related ones, like time_unit or log*)
)
out.show()
out.save("perf.png", transparent=True, bbox_inches="tight")

Other examples:

Installation

perfplot is available from the Python Package Index, so simply do

pip install perfplot

to install.

Testing

To run the perfplot unit tests, check out this repository and type

pytest

License

This software is published under the GPLv3 license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].