httpie-cli/extras/profiling
2022-01-24 18:20:03 +03:00
..
benchmarks.py Optimize encoding detection (#1243) 2021-12-23 11:05:58 -08:00
README.md docs: format the benchmark docs 2022-01-24 18:20:03 +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 accross 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 enviroment with additional dependencies (such as pyOpenSSL), you can pass --complex.