-
Notifications
You must be signed in to change notification settings - Fork 52
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.