-
Notifications
You must be signed in to change notification settings - Fork 50
Tables: Workloads
Eric Snow edited this page Jun 2, 2022
·
6 revisions
See the benchmarking page for a discussion about Python workloads and benchmarks.
workload | sub-workload | description | ... |
---|---|---|---|
Web | Workloads used in typical server-side web applications | ||
Template rendering | Rendering HTML using a template language | ||
HTML parsing | Parsing HTML content | ||
JSON handling | Time to serialize and deserialize JSON | ||
Regular expressions | Common regular expression uses for web applications | ||
Database | Common database workloads in web applications | ||
HTTP server | Cost of serving HTTP requests | ||
Image rasterization | Generating images from a vector form | ||
Cryptography | Calculating cryptographic hashes and ciphers | ||
Commandline | Workloads import to cli apps, such as application startup | ||
Numeric | Numeric workloads (in pure Python, without common numeric libraries) | ||
Puzzles | Puzzles, often derived from standard cross-language benchmarks, often exercising graph-like data structures |
Alternative (top-level/app focus):
workload | sub-workload | description | examples | ... | ... |
---|---|---|---|---|---|
one-off | |||||
quick script | |||||
REPL | |||||
instruction (edu) | |||||
demo | |||||
Jupyter | |||||
tool (CLI) | |||||
script | |||||
app | |||||
client (front-end only) | |||||
library-as-script | |||||
tool (GUI) | e.g. via tkinter or pyqt | ||||
self-contained | |||||
front-end only | |||||
devops | |||||
short-running tools | |||||
long-running tools | |||||
automation | |||||
"web" | |||||
static site | |||||
dynamic site | |||||
"function" | |||||
service API | |||||
data science | |||||
data processing | |||||
scientific computing | |||||
finance | |||||
machine learning | |||||
games | |||||
complete (e.g. via pygame) | |||||
backend (e.g. eve) | |||||
... |
- (The above is obviously incomplete and some workloads might be subdivided, combined, or moved around.)
- (There are also usage categories that aren't quite workloads: prototyping, adaptation (glue).)
Alternative (sub-community focus):
community | workload | description | examples | ... | ... |
---|---|---|---|---|---|
programming hobbyist | |||||
programmer | |||||
devops | |||||
web | |||||
education | |||||
data science | |||||
scientific computing | |||||
machine learning | |||||
finance | |||||
maker | |||||
embedded hardware | |||||
games | |||||
automation | |||||
enterprise | |||||
... |
XXX Workloads can be sub-categorized by the resources they use:
resource | ... |
---|---|
filesystem | |
network | |
database | |
SCM repo | |
library (Python) | |
library (non-Python) | |
The Python stdlib includes a number of tools (applications) which can be matched, respectively, to a workload. We can use them as examples:
-
json.tool
- ... -
2to3
- Migrates Python 2 to Python 3 source code. (Deprecated in Python 3.11, to be removed in 3.13)
(These "workload" benchmarks are all considered macro benchmarks.)
workload | benchmark | description |
---|---|---|
2to3 | 2to3 | Runs the 2to3 tool over 9 files from the Django 1.1.4 source code |
Template rendering | chameleon | Renders a large HTML table using the chameleon template library |
django_template | Renders a large HTML table using the django_template library |
|
genshi_template | Renders a large HTML template using the genshi library |
|
mako | Renders a large HTML table using the mako library |
|
HTML parsing | html5lib | Time to parse an HTML file using html5lib
|
JSON handling | json_dumps | Time to dump JSON |
json_loads | Time to load JSON | |
Regular expressions | regex_v8 | A benchmark derived from regular expressions used on popular webpages |
Database | sqlalchemy_declarative | |
sqlalchemy_imperative | ||
sqlite_synth | ||
HTTP Server | tornado | |
Image rasterization | chaos | Generates an image from splines |
raytrace | Simple raytracer | |
Cryptography | crypto_pyaes | Calculate AES block cipher using the pyaes library |
Commandline | hg_startup | Measure the time to get the output of Mercurial's hg help
|
python_startup | Measure python startup time | |
python_startup_nosite | Measure python startup time without importing the site module |
|
Numeric | scimark_sor | Successive over-relaxation benchmark |
scimark_sparse_mat_mult | Sparse matrix multiplication benchmark | |
scimark_monte_carlo | Benchmark on the Monte Carlo algorithm to compute the area of a disc | |
scimark_lu | LU decomposition benchmark | |
scimark_fft | FFT benchmark | |
spectral_norm | ||
sympy_* | ||
Puzzles | deltablue | An implementation of the deltablue constraint-solving algorithm |
fannkuch | A permutation flipping game | |
go | AI playing Go board game, using Zobrist hashing approach | |
hexiom | Solver of the Hexiom board game | |
mdp | Battle with damages and topological sorting of nodes in a graph | |
meteor_contest | Solver for Meteor Puzzle board | |
nbody | nbody benchmark from Computer Language Benchmarks Game | |
nqueens | Simple, brute-force N-queens solver | |
richards |
The dominant features in those benchmarks are enumerated on the features page.
Also see the per-benchmark tables.