httpie-cli/extras/profiling
luzpaz d262181bed
Fix typos (user-facing and non-user-facing) (#1357)
* Fix typos (user-facing and non-user-facing

Found via `codespell -q 3 -L datas,medias,warmup`

* Fix source typo found in tests/
2022-04-16 02:06:34 +03:00
..
benchmarks.py Fix typos (user-facing and non-user-facing) (#1357) 2022-04-16 02:06:34 +03:00
README.md Fix typos (user-facing and non-user-facing) (#1357) 2022-04-16 02:06:34 +03:00
run.py Add initial benchmarking infrastructure (#1232) 2021-12-14 07:05:25 -08:00

HTTPie Benchmarking Infrastructure

This directory includes the benchmarks we use for testing HTTPie's speed and the infrastructure to automate this testing across versions.

Usage

Ensure the following requirements are satisfied:

  • Python 3.7+
  • pyperf

Then, run the extras/benchmarks/run.py:

$ python extras/profiling/run.py

Without any options, this command will initially create an isolated environment and install httpie from the latest commit. Then it will create a second environment with the master of the current repository and run the benchmarks on both of them. It will compare the results and print it as a markdown table:

Benchmark master this_branch
http --version (startup) 201 ms 174 ms: 1.16x faster
http --offline pie.dev/get (startup) 200 ms 174 ms: 1.15x faster
Geometric mean (ref) 1.10x faster

If your master branch is not up-to-date, you can get a fresh clone by passing --fresh option. This way, the benchmark runner will clone the httpie/httpie repo from GitHub and use it as the baseline.

You can customize these branches by passing --local-repo/--target-branch, and customize the repos by passing --local-repo/--target-repo (can either take a URL or a path).

If you want to run a third environment with additional dependencies (such as pyOpenSSL), you can pass --complex.