nschloe / Perfplot
Licence: gpl-3.0
Performance plots for Python code
Stars: ✭ 629
Programming Languages
python
139335 projects - #7 most used programming language
Labels
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
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
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 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:
- Making a flat list out of list of lists in Python
- Most efficient way to map function over numpy array
- numpy: most efficient frequency counts for unique values in an array
- Most efficient way to reverse a numpy array
- How to add an extra column to an numpy array
- Initializing numpy matrix to something other than zero or one
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].