Skip to content

Add option to use mimalloc as global allocator#16024

Open
mtreinish wants to merge 6 commits intoQiskit:mainfrom
mtreinish:mimalloc
Open

Add option to use mimalloc as global allocator#16024
mtreinish wants to merge 6 commits intoQiskit:mainfrom
mtreinish:mimalloc

Conversation

@mtreinish
Copy link
Copy Markdown
Member

@mtreinish mtreinish commented Apr 14, 2026

This commit adds a new feature to the cext and pyext crates to switch the global allocator to use mimalloc [1] instead of the system allocator. mimalloc promises better allocation performance and also lower resident set size over glibc, macOS's libmalloc, or window's allocator [2]. In local benchmarking using mimalloc improves runtime performance on transpiler bencmarks in asv about 10% on my x86_64 benchmarking system. The tradeoff for this is the mimalloc crate [3] internally builds and statically links the mimalloc c library from source as part of cargo's build process. This is all encapsulated in the mimalloc-sys's build.rs using the cc [4] crate so it embeds very cleanly into the build system. However, this does however require that a C compiler is available when building from source. For building the Python package and ironically the C standalone lib this was previously not a requirement.

When the feature is enabled it switches the global allocator to use mimalloc. Since this is global for a compilation artifact we can only do it once in qiskit crate, and we'll want to do it either in pyext xor cext based on whether we're building a python extension or c standalone lib so that only the outermost crate is opinionated about which allocator to use. By default this feature is disabled on both crates and we opt-in to it in the build system. Opting in is triggered by an environment variable QISKIT_BUILD_WITH_MIMALLOC=1. For building pyext the setup.py file updates the features we pass to setuptools-rust when building the extension to enable the mimalloc crate and set the global allocator in the pyext code. Similarly, the makefile is updated to do the same for build cext in standalone mode.

[1] https://github.com/microsoft/mimalloc
[2] Leijen, D., Zorn, B., de Moura, L. (2019). Mimalloc: Free List Sharding in Action. In: Lin, A. (eds) Programming Languages and Systems. APLAS 2019. Lecture Notes in Computer Science(), vol 11893. Springer, Cham. https://doi.org/10.1007/978-3-030-34175-6_13
[3] https://crates.io/crates/mimalloc
[4] https://docs.rs/cc/latest/cc/

AI/LLM disclosure

  • I didn't use LLM tooling, or only used it privately.
  • I used the following tool to help write this PR description:
  • I used the following tool to generate or modify code:

@mtreinish mtreinish requested a review from a team as a code owner April 14, 2026 14:09
@mtreinish mtreinish added Rust This PR or issue is related to Rust code in the repository Changelog: Build Add a "Build System" entry in the GitHub Release changelog. labels Apr 14, 2026
@qiskit-bot
Copy link
Copy Markdown
Collaborator

One or more of the following people are relevant to this code:

  • @Qiskit/terra-core

@mtreinish
Copy link
Copy Markdown
Member Author

I did two full asv runs comparing this to main. The first was on my MBP with an m1 max the second on my x86_64 linux benchmarking system. Looking at the just where asv flagged a significant difference, on the mac:

| Change   | Before [823cc888] <mimalloc~1>   | After [0bba0eef] <mimalloc>   |   Ratio | Benchmark (Parameter)                                                                                         |
|----------|----------------------------------|-------------------------------|---------|---------------------------------------------------------------------------------------------------------------|
| -        | 7.62±0.1μs                       | 6.65±0.04μs                   |    0.87 | circuit_construction.CircuitConstructionBench.time_circuit_copy(14, 128)                                      |
| -        | 4.27±0.1μs                       | 3.77±0.03μs                   |    0.88 | circuit_construction.CircuitConstructionBench.time_circuit_copy(2, 8)                                         |
| -        | 8.50±0.2μs                       | 7.66±0.4μs                    |    0.9  | circuit_construction.CircuitConstructionBench.time_circuit_copy(20, 8)                                        |
| -        | 4.87±0.03μs                      | 4.39±0.1μs                    |    0.9  | circuit_construction.CircuitConstructionBench.time_circuit_copy(5, 8)                                         |
| -        | 6.65±0.3μs                       | 5.50±0.05μs                   |    0.83 | circuit_construction.CircuitConstructionBench.time_circuit_copy(8, 128)                                       |
| -        | 5.66±0.1μs                       | 4.96±0.05μs                   |    0.88 | circuit_construction.CircuitConstructionBench.time_circuit_copy(8, 8)                                         |
| -        | 54.4±0.4μs                       | 47.7±0.5μs                    |    0.88 | circuit_construction.CircuitConstructionBench.time_circuit_extend(14, 2048)                                   |
| -        | 50.9±0.5μs                       | 46.0±0.5μs                    |    0.9  | circuit_construction.CircuitConstructionBench.time_circuit_extend(5, 2048)                                    |
| -        | 5.58±0.06μs                      | 4.98±0.02μs                   |    0.89 | circuit_construction.CircuitConstructionBench.time_circuit_extend(5, 8)                                       |
| -        | 6.48±0.2μs                       | 5.75±0.01μs                   |    0.89 | circuit_construction.CircuitConstructionBench.time_circuit_extend(8, 8)                                       |
| -        | 4.31±0.03ms                      | 3.84±0ms                      |    0.89 | circuit_construction.ParamaterizedDifferentCircuit.time_DTC100_set_build(100, 10)                             |
| -        | 63.1±4ms                         | 47.6±3ms                      |    0.75 | circuit_construction.ParamaterizedDifferentCircuit.time_DTC100_set_build(100, 150)                            |
| -        | 19.7±0.8ms                       | 16.3±0.3ms                    |    0.83 | circuit_construction.ParamaterizedDifferentCircuit.time_DTC100_set_build(100, 50)                             |
| -        | 1.71±0.08ms                      | 1.43±0ms                      |    0.84 | circuit_construction.ParamaterizedDifferentCircuit.time_DTC100_set_build(50, 10)                              |
| -        | 18.6±1ms                         | 15.9±0.4ms                    |    0.86 | circuit_construction.ParamaterizedDifferentCircuit.time_DTC100_set_build(50, 150)                             |
| -        | 229±8μs                          | 189±10μs                      |    0.82 | circuit_construction.ParamaterizedDifferentCircuit.time_QV100_build(10, 150)                                  |
| -        | 117±4μs                          | 94.8±5μs                      |    0.81 | circuit_construction.ParamaterizedDifferentCircuit.time_QV100_build(10, 50)                                   |
| -        | 1.40±0.02ms                      | 1.15±0.02ms                   |    0.82 | circuit_construction.ParamaterizedDifferentCircuit.time_QV100_build(100, 150)                                 |
| -        | 125±4μs                          | 101±7μs                       |    0.8  | circuit_construction.ParamaterizedDifferentCircuit.time_QV100_build(50, 10)                                   |
| -        | 219±2μs                          | 178±5μs                       |    0.81 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 128, 128)                             |
| -        | 55.3±1μs                         | 47.1±0.2μs                    |    0.85 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 128, 8)                               |
| -        | 301±6ms                          | 256±3ms                       |    0.85 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 131072, 131072)                       |
| -        | 93.3±0.6ms                       | 84.6±0.8ms                    |    0.91 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 131072, 32768)                        |
| -        | 607±0.7μs                        | 534±30μs                      |    0.88 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 2048, 128)                            |
| -        | 3.26±0.01ms                      | 2.68±0.1ms                    |    0.82 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 2048, 2048)                           |
| -        | 446±2μs                          | 395±2μs                       |    0.88 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 2048, 8)                              |
| -        | 10.8±0.3ms                       | 9.55±0.1ms                    |    0.88 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 32768, 2048)                          |
| -        | 63.0±0.5ms                       | 56.1±0.5ms                    |    0.89 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 32768, 32768)                         |
| -        | 19.5±0.3ms                       | 17.6±0.2ms                    |    0.9  | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 32768, 8192)                          |
| -        | 30.3±0.04μs                      | 26.2±0.08μs                   |    0.86 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 8, 8)                                 |
| -        | 4.59±0.01ms                      | 4.02±0.2ms                    |    0.87 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 8192, 2048)                           |
| -        | 2.23±0.4ms                       | 1.49±0.1ms                    |    0.67 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 8192, 8)                              |
| -        | 13.6±0.1ms                       | 11.2±0.08ms                   |    0.82 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 8192, 8192)                           |
| -        | 16.7±0.2μs                       | 14.8±0.03μs                   |    0.89 | converters.ConverterBenchmarks.time_circuit_to_dag(1, 128)                                                    |
| -        | 4.72±0.01μs                      | 3.82±0.01μs                   |    0.81 | converters.ConverterBenchmarks.time_circuit_to_dag(1, 8)                                                      |
| -        | 139±4μs                          | 122±0.2μs                     |    0.87 | converters.ConverterBenchmarks.time_circuit_to_dag(14, 128)                                                   |
| -        | 20.0±0.02μs                      | 17.1±0.03μs                   |    0.85 | converters.ConverterBenchmarks.time_circuit_to_dag(14, 8)                                                     |
| -        | 23.5±0.4μs                       | 21.0±0.04μs                   |    0.89 | converters.ConverterBenchmarks.time_circuit_to_dag(2, 128)                                                    |
| -        | 320±0.9μs                        | 287±0.5μs                     |    0.89 | converters.ConverterBenchmarks.time_circuit_to_dag(2, 2048)                                                   |
| -        | 5.98±0.04μs                      | 4.89±0.01μs                   |    0.82 | converters.ConverterBenchmarks.time_circuit_to_dag(2, 8)                                                      |
| -        | 198±1μs                          | 177±2μs                       |    0.89 | converters.ConverterBenchmarks.time_circuit_to_dag(20, 128)                                                   |
| -        | 326±2μs                          | 284±0.8μs                     |    0.87 | converters.ConverterBenchmarks.time_circuit_to_dag(32, 128)                                                   |
| -        | 40.4±0.05μs                      | 35.9±0.5μs                    |    0.89 | converters.ConverterBenchmarks.time_circuit_to_dag(32, 8)                                                     |
| -        | 48.8±0.06μs                      | 44.1±0.05μs                   |    0.9  | converters.ConverterBenchmarks.time_circuit_to_dag(5, 128)                                                    |
| -        | 9.96±0.01μs                      | 8.29±0.03μs                   |    0.83 | converters.ConverterBenchmarks.time_circuit_to_dag(5, 8)                                                      |
| -        | 543±0.8μs                        | 478±1μs                       |    0.88 | converters.ConverterBenchmarks.time_circuit_to_dag(53, 128)                                                   |
| -        | 64.5±0.8μs                       | 56.8±0.2μs                    |    0.88 | converters.ConverterBenchmarks.time_circuit_to_dag(53, 8)                                                     |
| -        | 77.4±1μs                         | 68.8±0.1μs                    |    0.89 | converters.ConverterBenchmarks.time_circuit_to_dag(8, 128)                                                    |
| -        | 13.2±0.03μs                      | 11.0±0.03μs                   |    0.83 | converters.ConverterBenchmarks.time_circuit_to_dag(8, 8)                                                      |
| -        | 84.6±0.2μs                       | 73.6±1μs                      |    0.87 | converters.ConverterBenchmarks.time_circuit_to_instruction(14, 128)                                           |
| -        | 122±2μs                          | 101±1μs                       |    0.83 | converters.ConverterBenchmarks.time_circuit_to_instruction(20, 128)                                           |
| -        | 42.7±2μs                         | 36.3±0.05μs                   |    0.85 | converters.ConverterBenchmarks.time_circuit_to_instruction(20, 8)                                             |
| -        | 203±7μs                          | 157±3μs                       |    0.77 | converters.ConverterBenchmarks.time_circuit_to_instruction(32, 128)                                           |
| -        | 57.0±2μs                         | 48.7±0.2μs                    |    0.85 | converters.ConverterBenchmarks.time_circuit_to_instruction(32, 8)                                             |
| -        | 331±10μs                         | 276±10μs                      |    0.83 | converters.ConverterBenchmarks.time_circuit_to_instruction(53, 128)                                           |
| -        | 79.5±0.2μs                       | 70.9±0.4μs                    |    0.89 | converters.ConverterBenchmarks.time_circuit_to_instruction(53, 8)                                             |
| -        | 79.9±4μs                         | 71.3±0.2μs                    |    0.89 | converters.ConverterBenchmarks.time_dag_to_circuit(8, 128)                                                    |
| -        | 3.53±0.02s                       | 3.08±0.03s                    |    0.87 | manipulate.TestCircuitManipulate.time_QV100_basis_change                                                      |
| -        | 18.2±0.3ms                       | 15.7±0.03ms                   |    0.86 | manipulate.TestCircuitManipulate.time_multi_control_decompose                                                 |
| -        | 347±6ms                          | 309±2ms                       |    0.89 | mapping_passes.PassBenchmarks.time_basic_swap(14, 1024)                                                       |
| -        | 602±10ms                         | 520±1ms                       |    0.86 | mapping_passes.PassBenchmarks.time_basic_swap(20, 1024)                                                       |
| -        | 49.4±2ms                         | 41.5±0.2ms                    |    0.84 | mapping_passes.PassBenchmarks.time_sabre_layout(14, 1024)                                                     |
| -        | 97.1±1ms                         | 84.8±0.6ms                    |    0.87 | mapping_passes.PassBenchmarks.time_sabre_layout(20, 1024)                                                     |
| -        | 7.01±0.2ms                       | 5.83±0.06ms                   |    0.83 | mapping_passes.PassBenchmarks.time_sabre_layout(5, 1024)                                                      |
| -        | 5.26±0.01ms                      | 4.73±0.02ms                   |    0.9  | passes.Collect2QPassBenchmarks.time_consolidate_blocks(14, 1024)                                              |
| -        | 2.47±0.01ms                      | 2.22±0.01ms                   |    0.9  | passes.CommutativeAnalysisPassBenchmarks.time_commutative_cancellation(14, 1024)                              |
| -        | 1.13±0.01ms                      | 987±2μs                       |    0.87 | passes.CommutativeAnalysisPassBenchmarks.time_commutative_cancellation(5, 1024)                               |
| -        | 768±2μs                          | 687±1μs                       |    0.89 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('grover', 16)                        |
| -        | 139±2μs                          | 123±0.4μs                     |    0.88 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('grover', 8)                         |
| -        | 81.6±1μs                         | 73.3±0.6μs                    |    0.9  | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('mcx', 16)                           |
| -        | 202±4μs                          | 177±0.6μs                     |    0.88 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('mcx', 32)                           |
| -        | 524±2μs                          | 468±1μs                       |    0.89 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('mcx', 64)                           |
| -        | 37.7±0.1μs                       | 31.9±0.2μs                    |    0.85 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('mcx', 8)                            |
| -        | 82.5±0.8μs                       | 74.4±0.5μs                    |    0.9  | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('modular_adder', 16)                 |
| -        | 302±20μs                         | 265±5μs                       |    0.88 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('modular_adder', 32)                 |
| -        | 489±5μs                          | 434±4μs                       |    0.89 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('multiplier', 16)                    |
| -        | 2.38±0.01ms                      | 2.13±0.03ms                   |    0.89 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('multiplier', 32)                    |
| -        | 12.2±0.2ms                       | 11.0±0.1ms                    |    0.9  | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('multiplier', 64)                    |
| -        | 76.3±0.4μs                       | 67.4±2μs                      |    0.88 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('multiplier', 8)                     |
| -        | 3.59±0.02ms                      | 3.25±0.01ms                   |    0.9  | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('qaoa', 32)                          |
| -        | 165±0.8μs                        | 145±1μs                       |    0.88 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('qaoa', 8)                           |
| -        | 170±1μs                          | 145±0.3μs                     |    0.85 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('qft', 16)                           |
| -        | 772±2μs                          | 664±10μs                      |    0.86 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('qft', 32)                           |
| -        | 4.07±0.06ms                      | 3.55±0.08ms                   |    0.87 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('qft', 64)                           |
| -        | 48.0±0.08μs                      | 42.6±0.9μs                    |    0.89 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('qft', 8)                            |
| -        | 224±2μs                          | 193±0.9μs                     |    0.87 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('trotter', 8)                        |
| -        | 28.6±0.08ms                      | 23.3±0.1ms                    |    0.81 | passes.MultipleBasisPassBenchmarks.time_basis_translator(14, 1024, ['rx', 'ry', 'rz', 'r', 'rxx', 'id'])      |
| -        | 19.1±0.1ms                       | 15.3±0.3ms                    |    0.8  | passes.MultipleBasisPassBenchmarks.time_basis_translator(14, 1024, ['rz', 'x', 'sx', 'cx', 'id'])             |
| -        | 13.1±0.2ms                       | 11.1±0.1ms                    |    0.85 | passes.MultipleBasisPassBenchmarks.time_basis_translator(14, 1024, ['u', 'cx', 'id'])                         |
| -        | 41.7±0.2ms                       | 34.2±0.7ms                    |    0.82 | passes.MultipleBasisPassBenchmarks.time_basis_translator(20, 1024, ['rx', 'ry', 'rz', 'r', 'rxx', 'id'])      |
| -        | 26.6±0.2ms                       | 21.6±0.2ms                    |    0.81 | passes.MultipleBasisPassBenchmarks.time_basis_translator(20, 1024, ['rz', 'x', 'sx', 'cx', 'id'])             |
| -        | 18.5±0.09ms                      | 16.0±0.2ms                    |    0.87 | passes.MultipleBasisPassBenchmarks.time_basis_translator(20, 1024, ['u', 'cx', 'id'])                         |
| -        | 9.82±0.2ms                       | 8.05±0.09ms                   |    0.82 | passes.MultipleBasisPassBenchmarks.time_basis_translator(5, 1024, ['rx', 'ry', 'rz', 'r', 'rxx', 'id'])       |
| -        | 7.07±0.1ms                       | 5.83±0.04ms                   |    0.82 | passes.MultipleBasisPassBenchmarks.time_basis_translator(5, 1024, ['rz', 'x', 'sx', 'cx', 'id'])              |
| -        | 4.77±0.02ms                      | 4.20±0.2ms                    |    0.88 | passes.MultipleBasisPassBenchmarks.time_basis_translator(5, 1024, ['u', 'cx', 'id'])                          |
| -        | 1.19±0.01ms                      | 1.05±0.01ms                   |    0.88 | passes.MultipleBasisPassBenchmarks.time_optimize_1q_decompose(14, 1024, ['rz', 'x', 'sx', 'cx', 'id'])        |
| -        | 2.94±0.04ms                      | 2.65±0.03ms                   |    0.9  | passes.MultipleBasisPassBenchmarks.time_optimize_1q_decompose(20, 1024, ['rx', 'ry', 'rz', 'r', 'rxx', 'id']) |
| -        | 1.66±0.01ms                      | 1.48±0.01ms                   |    0.89 | passes.MultipleBasisPassBenchmarks.time_optimize_1q_decompose(20, 1024, ['rz', 'x', 'sx', 'cx', 'id'])        |
| -        | 1.35±0.03ms                      | 1.22±0.02ms                   |    0.9  | passes.MultipleBasisPassBenchmarks.time_optimize_1q_decompose(20, 1024, ['u', 'cx', 'id'])                    |
| -        | 904±2μs                          | 821±1μs                       |    0.91 | passes.MultipleBasisPassBenchmarks.time_optimize_1q_decompose(5, 1024, ['rx', 'ry', 'rz', 'r', 'rxx', 'id'])  |
| -        | 474±2μs                          | 414±0.8μs                     |    0.87 | passes.MultipleBasisPassBenchmarks.time_optimize_1q_decompose(5, 1024, ['rz', 'x', 'sx', 'cx', 'id'])         |
| -        | 1.64±0ms                         | 1.46±0.01ms                   |    0.89 | passes.PassBenchmarks.time_collect_2q_blocks(14, 1024)                                                        |
| -        | 2.32±0.01ms                      | 2.07±0.01ms                   |    0.89 | passes.PassBenchmarks.time_collect_2q_blocks(20, 1024)                                                        |
| -        | 645±6μs                          | 571±10μs                      |    0.89 | passes.PassBenchmarks.time_collect_2q_blocks(5, 1024)                                                         |
| -        | 72.6±0.1ms                       | 58.6±0.3ms                    |    0.81 | passes.PassBenchmarks.time_commutation_analysis(14, 1024)                                                     |
| -        | 108±1ms                          | 85.9±1ms                      |    0.8  | passes.PassBenchmarks.time_commutation_analysis(20, 1024)                                                     |
| -        | 23.7±0.03ms                      | 19.2±0.07ms                   |    0.81 | passes.PassBenchmarks.time_commutation_analysis(5, 1024)                                                      |
| -        | 882±2μs                          | 799±2μs                       |    0.91 | passes.PassBenchmarks.time_count_ops_longest_path(20, 1024)                                                   |
| -        | 238±1μs                          | 213±2μs                       |    0.9  | passes.PassBenchmarks.time_count_ops_longest_path(5, 1024)                                                    |
| -        | 1.02±0ms                         | 917±6μs                       |    0.9  | passes.PassBenchmarks.time_dag_longest_path(20, 1024)                                                         |
| -        | 431±10μs                         | 374±7μs                       |    0.87 | passes.PassBenchmarks.time_dag_longest_path(5, 1024)                                                          |
| -        | 569±1μs                          | 506±9μs                       |    0.89 | passes.PassBenchmarks.time_depth_pass(14, 1024)                                                               |
| -        | 828±20μs                         | 721±6μs                       |    0.87 | passes.PassBenchmarks.time_depth_pass(20, 1024)                                                               |
| -        | 212±5μs                          | 183±4μs                       |    0.86 | passes.PassBenchmarks.time_depth_pass(5, 1024)                                                                |
| -        | 11.0±0.2ms                       | 8.91±0.04ms                   |    0.81 | qft.QftTranspileBench.time_ibmq_backend_transpile(13)                                                         |
| -        | 13.3±0.4ms                       | 10.7±0.2ms                    |    0.81 | qft.QftTranspileBench.time_ibmq_backend_transpile(14)                                                         |
| -        | 6.20±0.2ms                       | 5.31±0.02ms                   |    0.86 | qft.QftTranspileBench.time_ibmq_backend_transpile(8)                                                          |
| -        | 32.5±0.07μs                      | 29.5±0.1μs                    |    0.91 | qpy.ParameterizedBenchmarks.time_dump(20, 1)                                                                  |
| -        | 217±5μs                          | 193±4μs                       |    0.89 | qpy.ParameterizedBenchmarks.time_dump(20, 10)                                                                 |
| -        | 113±0.4μs                        | 102±1μs                       |    0.9  | qpy.ParameterizedBenchmarks.time_dump(20, 5)                                                                  |
| -        | 544±2μs                          | 488±9μs                       |    0.9  | qpy.ParameterizedBenchmarks.time_dump(50, 10)                                                                 |
| -        | 283±4μs                          | 249±0.5μs                     |    0.88 | qpy.ParameterizedBenchmarks.time_dump(50, 5)                                                                  |
| -        | 59.8±0.2μs                       | 53.7±0.06μs                   |    0.9  | qpy.ParameterizedBenchmarks.time_dump_and_load(20, 1)                                                         |
| -        | 339±3μs                          | 291±6μs                       |    0.86 | qpy.ParameterizedBenchmarks.time_dump_and_load(20, 10)                                                        |
| -        | 194±4μs                          | 156±0.9μs                     |    0.8  | qpy.ParameterizedBenchmarks.time_dump_and_load(20, 5)                                                         |
| -        | 123±2μs                          | 101±0.2μs                     |    0.82 | qpy.ParameterizedBenchmarks.time_dump_and_load(50, 1)                                                         |
| -        | 842±5μs                          | 733±20μs                      |    0.87 | qpy.ParameterizedBenchmarks.time_dump_and_load(50, 10)                                                        |
| -        | 447±4μs                          | 374±1μs                       |    0.84 | qpy.ParameterizedBenchmarks.time_dump_and_load(50, 5)                                                         |
| -        | 9.70±0.2ms                       | 6.74±0.2ms                    |    0.7  | quantum_info.CliffordDecomposeBench.time_decompose('3,100')                                                   |
| -        | 21.0±0.2ms                       | 18.0±0.4ms                    |    0.86 | quantum_volume.QuantumVolumeBenchmark.time_ibmq_backend_transpile(14, 'translator')                           |
| -        | 52.4±0.9ms                       | 45.7±2ms                      |    0.87 | quantum_volume.QuantumVolumeBenchmark.time_ibmq_backend_transpile(20, 'synthesis')                            |
| -        | 106±2ms                          | 89.9±0.7ms                    |    0.85 | quantum_volume.QuantumVolumeBenchmark.time_ibmq_backend_transpile(27, 'synthesis')                            |
| -        | 86.8±0.5ms                       | 75.1±0.8ms                    |    0.87 | quantum_volume.QuantumVolumeBenchmark.time_ibmq_backend_transpile(27, 'translator')                           |
| -        | 6.04±0.2ms                       | 5.42±0.1ms                    |    0.9  | quantum_volume.QuantumVolumeBenchmark.time_ibmq_backend_transpile(5, 'synthesis')                             |
| -        | 5.40±0.06ms                      | 4.81±0.05ms                   |    0.89 | quantum_volume.QuantumVolumeBenchmark.time_ibmq_backend_transpile(5, 'translator')                            |
| -        | 9.69±0.2ms                       | 8.18±0.2ms                    |    0.84 | quantum_volume.QuantumVolumeBenchmark.time_ibmq_backend_transpile(8, 'synthesis')                             |
| -        | 4.81±0.03ms                      | 4.37±0.03ms                   |    0.91 | queko.QUEKOTranspilerBench.time_transpile_bigd(2, 'sabre')                                                    |
| -        | 33.6±0.3ms                       | 29.0±0.8ms                    |    0.86 | queko.QUEKOTranspilerBench.time_transpile_bntf(2, 'sabre')                                                    |
| -        | 21.3±0.2ms                       | 18.8±0.2ms                    |    0.88 | queko.QUEKOTranspilerBench.time_transpile_bss(0, 'sabre')                                                     |
| -        | 48.7±0.6ms                       | 41.3±0.2ms                    |    0.85 | queko.QUEKOTranspilerBench.time_transpile_bss(2, 'sabre')                                                     |
| -        | 15.0±0.3ms                       | 13.5±0.4ms                    |    0.9  | queko.QUEKOTranspilerBench.time_transpile_bss(2, None)                                                        |
| -        | 51.8±0.5ms                       | 44.9±1ms                      |    0.87 | queko.QUEKOTranspilerBench.time_transpile_bss(3, 'sabre')                                                     |
| -        | 5.16±0.01ms                      | 4.69±0ms                      |    0.91 | random_circuit_hex.BenchRandomCircuitHex.time_ibmq_backend_transpile(10)                                      |
| -        | 6.26±0.02ms                      | 5.63±0.01ms                   |    0.9  | random_circuit_hex.BenchRandomCircuitHex.time_ibmq_backend_transpile(12)                                      |
| -        | 11.4±0.4ms                       | 9.46±0.04ms                   |    0.83 | random_circuit_hex.BenchRandomCircuitHex.time_ibmq_backend_transpile(14)                                      |
| -        | 1.61±0.01s                       | 1.45±0.01s                    |    0.9  | randomized_benchmarking.RandomizedBenchmarkingBenchmark.time_ibmq_backend_transpile([0, 1])                   |
| -        | 1.61±0.01s                       | 1.44±0s                       |    0.9  | randomized_benchmarking.RandomizedBenchmarkingBenchmark.time_ibmq_backend_transpile_single_thread([0, 1])     |
| -        | 3.69±0.1ms                       | 3.29±0.07ms                   |    0.89 | ripple_adder.RippleAdderTranspile.time_transpile_square_grid_ripple_adder(10, 0)                              |
| -        | 11.8±0.1ms                       | 10.4±0.06ms                   |    0.88 | ripple_adder.RippleAdderTranspile.time_transpile_square_grid_ripple_adder(10, 2)                              |
| -        | 14.0±0.1ms                       | 12.3±0.05ms                   |    0.88 | ripple_adder.RippleAdderTranspile.time_transpile_square_grid_ripple_adder(10, 3)                              |
| -        | 23.5±0.3ms                       | 20.6±0.3ms                    |    0.87 | ripple_adder.RippleAdderTranspile.time_transpile_square_grid_ripple_adder(20, 2)                              |
| -        | 26.6±1ms                         | 22.4±0.05ms                   |    0.84 | ripple_adder.RippleAdderTranspile.time_transpile_square_grid_ripple_adder(20, 3)                              |
| -        | 29.4±0.2ms                       | 25.7±0.2ms                    |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 128, 0)                                 |
| -        | 71.4±0.4ms                       | 62.1±0.4ms                    |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 128, 1)                                 |
| -        | 210±3ms                          | 175±0.5ms                     |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 128, 2)                                 |
| -        | 268±0.7ms                        | 228±0.7ms                     |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 128, 3)                                 |
| -        | 3.51±0.03ms                      | 3.15±0.2ms                    |    0.9  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 16, 0)                                  |
| -        | 7.65±0.2ms                       | 6.84±0.3ms                    |    0.89 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 16, 1)                                  |
| -        | 17.4±0.7ms                       | 14.7±0.05ms                   |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 16, 2)                                  |
| -        | 20.0±0.3ms                       | 16.8±0.03ms                   |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 16, 3)                                  |
| -        | 7.66±0.07ms                      | 6.82±0.5ms                    |    0.89 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 32, 0)                                  |
| -        | 14.9±0.03ms                      | 12.6±0.3ms                    |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 32, 1)                                  |
| -        | 47.9±0.2ms                       | 40.3±0.5ms                    |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 32, 2)                                  |
| -        | 61.0±0.5ms                       | 52.6±0.2ms                    |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 32, 3)                                  |
| -        | 14.8±0.07ms                      | 12.9±0.08ms                   |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 64, 0)                                  |
| -        | 36.8±0.6ms                       | 30.7±0.4ms                    |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 64, 1)                                  |
| -        | 96.3±0.3ms                       | 82.5±0.5ms                    |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 64, 2)                                  |
| -        | 128±1ms                          | 112±2ms                       |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 64, 3)                                  |
| -        | 926±10μs                         | 771±5μs                       |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 8, 0)                                   |
| -        | 1.73±0.02ms                      | 1.49±0.05ms                   |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 8, 1)                                   |
| -        | 3.16±0.01ms                      | 2.68±0.06ms                   |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 8, 2)                                   |
| -        | 3.59±0ms                         | 3.04±0.01ms                   |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 8, 3)                                   |
| -        | 1.30±0.01ms                      | 1.12±0.01ms                   |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 128, 0)                                    |
| -        | 2.58±0.02ms                      | 2.23±0.05ms                   |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 128, 1)                                    |
| -        | 8.04±0.2ms                       | 6.75±0.03ms                   |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 128, 2)                                    |
| -        | 11.3±0.02ms                      | 9.69±0.1ms                    |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 128, 3)                                    |
| -        | 534±10μs                         | 448±2μs                       |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 16, 1)                                     |
| -        | 1.15±0.01ms                      | 988±30μs                      |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 16, 2)                                     |
| -        | 1.53±0.03ms                      | 1.29±0ms                      |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 16, 3)                                     |
| -        | 493±9μs                          | 410±2μs                       |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 32, 0)                                     |
| -        | 828±3μs                          | 702±20μs                      |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 32, 1)                                     |
| -        | 2.13±0.01ms                      | 1.79±0ms                      |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 32, 2)                                     |
| -        | 2.94±0.01ms                      | 2.50±0.04ms                   |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 32, 3)                                     |
| -        | 782±40μs                         | 639±8μs                       |    0.82 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 64, 0)                                     |
| -        | 1.45±0.04ms                      | 1.23±0.02ms                   |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 64, 1)                                     |
| -        | 4.22±0.07ms                      | 3.48±0.01ms                   |    0.82 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 64, 2)                                     |
| -        | 6.01±0.07ms                      | 4.86±0.01ms                   |    0.81 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 64, 3)                                     |
| -        | 384±3μs                          | 326±7μs                       |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 8, 1)                                      |
| -        | 648±10μs                         | 544±7μs                       |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 8, 2)                                      |
| -        | 818±10μs                         | 713±30μs                      |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 8, 3)                                      |
| -        | 1.60±0.03ms                      | 1.42±0.06ms                   |    0.89 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 128, 0)                          |
| -        | 2.50±0.01ms                      | 2.21±0.03ms                   |    0.88 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 128, 1)                          |
| -        | 11.5±0.02ms                      | 9.66±0.06ms                   |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 128, 2)                          |
| -        | 16.5±0.1ms                       | 14.0±0.2ms                    |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 128, 3)                          |
| -        | 389±2μs                          | 345±20μs                      |    0.89 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 16, 0)                           |
| -        | 528±2μs                          | 479±30μs                      |    0.91 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 16, 1)                           |
| -        | 1.56±0.01ms                      | 1.41±0.06ms                   |    0.9  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 16, 3)                           |
| -        | 2.25±0.01ms                      | 2.00±0.1ms                    |    0.89 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 32, 2)                           |
| -        | 3.12±0.01ms                      | 2.70±0.1ms                    |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 32, 3)                           |
| -        | 1.40±0.01ms                      | 1.21±0.01ms                   |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 64, 1)                           |
| -        | 4.78±0.01ms                      | 4.07±0.08ms                   |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 64, 2)                           |
| -        | 7.09±0.09ms                      | 5.93±0.1ms                    |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 64, 3)                           |
| -        | 305±1μs                          | 269±7μs                       |    0.88 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 8, 0)                            |
| -        | 700±5μs                          | 623±50μs                      |    0.89 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 8, 2)                            |
| -        | 869±2μs                          | 761±20μs                      |    0.88 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 8, 3)                            |
| -        | 28.4±0.3ms                       | 23.9±0.2ms                    |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 16, 2)                              |
| -        | 31.7±3ms                         | 25.9±2ms                      |    0.82 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 16, 3)                              |
| -        | 155±0.8ms                        | 130±0.6ms                     |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 32, 2)                              |
| -        | 3.66±0.07ms                      | 3.18±0.05ms                   |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 8, 2)                               |
| -        | 4.01±0.09ms                      | 3.37±0.02ms                   |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 8, 3)                               |
| -        | 190±1ms                          | 164±1ms                       |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 128, 0)                                   |
| -        | 340±1ms                          | 299±7ms                       |    0.88 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 128, 1)                                   |
| -        | 2.84±0.05ms                      | 2.26±0.06ms                   |    0.79 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 16, 0)                                    |
| -        | 5.08±0.02ms                      | 4.40±0.04ms                   |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 16, 1)                                    |
| -        | 16.2±0.1ms                       | 13.8±0.2ms                    |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 16, 2)                                    |
| -        | 21.0±0.1ms                       | 17.9±0.3ms                    |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 16, 3)                                    |
| -        | 11.1±0.05ms                      | 9.36±0.04ms                   |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 32, 0)                                    |
| -        | 20.0±0.02ms                      | 17.2±0.1ms                    |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 32, 1)                                    |
| -        | 93.5±0.3ms                       | 77.8±0.5ms                    |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 32, 2)                                    |
| -        | 115±0.8ms                        | 96.1±0.1ms                    |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 32, 3)                                    |
| -        | 45.3±0.1ms                       | 38.1±0.09ms                   |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 64, 0)                                    |
| -        | 82.4±2ms                         | 69.1±0.4ms                    |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 64, 1)                                    |
| -        | 619±4ms                          | 499±2ms                       |    0.81 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 64, 2)                                    |
| -        | 781±10μs                         | 617±10μs                      |    0.79 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 8, 0)                                     |
| -        | 1.39±0.02ms                      | 1.19±0.02ms                   |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 8, 1)                                     |
| -        | 3.16±0.01ms                      | 2.72±0.04ms                   |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 8, 2)                                     |
| -        | 4.24±0.01ms                      | 3.70±0.07ms                   |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 8, 3)                                     |
| -        | 29.6±0.05ms                      | 25.5±0.5ms                    |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 128, 0)                                    |
| -        | 48.7±0.3ms                       | 41.6±0.1ms                    |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 128, 1)                                    |
| -        | 78.0±0.2ms                       | 64.6±0.3ms                    |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 128, 2)                                    |
| -        | 83.4±0.2ms                       | 69.2±0.4ms                    |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 128, 3)                                    |
| -        | 588±2μs                          | 494±2μs                       |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 16, 0)                                     |
| -        | 912±30μs                         | 763±10μs                      |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 16, 1)                                     |
| -        | 3.18±0.01ms                      | 2.65±0ms                      |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 16, 2)                                     |
| -        | 3.51±0.01ms                      | 2.92±0.01ms                   |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 16, 3)                                     |
| -        | 1.95±0.01ms                      | 1.64±0.01ms                   |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 32, 0)                                     |
| -        | 3.00±0.01ms                      | 2.57±0.06ms                   |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 32, 1)                                     |
| -        | 13.2±0.03ms                      | 11.4±0.1ms                    |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 32, 2)                                     |
| -        | 14.4±0.1ms                       | 12.2±0.05ms                   |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 32, 3)                                     |
| -        | 7.44±0.04ms                      | 6.48±0.04ms                   |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 64, 0)                                     |
| -        | 14.0±0.04ms                      | 12.6±0.2ms                    |    0.9  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 64, 1)                                     |
| -        | 34.6±0.4ms                       | 29.0±0.4ms                    |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 64, 2)                                     |
| -        | 36.9±0.09ms                      | 31.2±0.5ms                    |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 64, 3)                                     |
| -        | 246±1μs                          | 204±6μs                       |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 8, 0)                                      |
| -        | 353±3μs                          | 293±2μs                       |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 8, 1)                                      |
| -        | 809±3μs                          | 677±3μs                       |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 8, 2)                                      |
| -        | 900±3μs                          | 754±3μs                       |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 8, 3)                                      |
| -        | 17.6±0.5ms                       | 15.2±0.04ms                   |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 128, 0)                                |
| -        | 32.1±0.09ms                      | 28.3±0.2ms                    |    0.88 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 128, 1)                                |
| -        | 56.3±0.08ms                      | 49.3±0.1ms                    |    0.88 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 128, 2)                                |
| -        | 65.6±0.1ms                       | 58.2±0.8ms                    |    0.89 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 128, 3)                                |
| -        | 2.27±0.01ms                      | 1.97±0.02ms                   |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 16, 0)                                 |
| -        | 4.20±0.08ms                      | 3.59±0.02ms                   |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 16, 1)                                 |
| -        | 7.71±0.3ms                       | 6.22±0.02ms                   |    0.81 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 16, 2)                                 |
| -        | 8.38±0.2ms                       | 7.12±0.01ms                   |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 16, 3)                                 |
| -        | 4.46±0.03ms                      | 3.87±0.01ms                   |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 32, 0)                                 |
| -        | 8.31±0.1ms                       | 7.08±0.04ms                   |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 32, 1)                                 |
| -        | 16.4±0.08ms                      | 14.3±0.2ms                    |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 32, 3)                                 |
| -        | 8.53±0.07ms                      | 7.68±0.04ms                   |    0.9  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 64, 0)                                 |
| -        | 16.1±0.09ms                      | 14.2±0.4ms                    |    0.88 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 64, 1)                                 |
| -        | 28.1±0.06ms                      | 24.6±0.2ms                    |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 64, 2)                                 |
| -        | 32.8±0.4ms                       | 28.6±0.4ms                    |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 64, 3)                                 |
| -        | 1.23±0.01ms                      | 1.06±0ms                      |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 8, 0)                                  |
| -        | 2.22±0.06ms                      | 1.99±0.1ms                    |    0.9  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 8, 1)                                  |
| -        | 3.60±0.01ms                      | 3.08±0.01ms                   |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 8, 2)                                  |
| -        | 4.15±0.01ms                      | 3.60±0.06ms                   |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 8, 3)                                  |
| -        | 117±0.6ms                        | 100±0.3ms                     |    0.86 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('grover', 4, 0)                                    |
| -        | 126±0.4ms                        | 108±0.4ms                     |    0.86 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('grover', 4, 1)                                    |
| -        | 130±0.5ms                        | 111±0.8ms                     |    0.85 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('grover', 4, 2)                                    |
| -        | 129±0.5ms                        | 111±0.8ms                     |    0.86 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('grover', 4, 3)                                    |
| -        | 319±0.8ms                        | 278±6ms                       |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('grover', 8, 0)                                    |
| -        | 154±0.8μs                        | 128±0.5μs                     |    0.83 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 4, 0)                                       |
| -        | 205±0.7μs                        | 173±0.6μs                     |    0.84 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 4, 1)                                       |
| -        | 324±10μs                         | 286±6μs                       |    0.88 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 4, 2)                                       |
| -        | 321±5μs                          | 283±3μs                       |    0.88 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 4, 3)                                       |
| -        | 215±1μs                          | 179±0.8μs                     |    0.83 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 8, 0)                                       |
| -        | 338±7μs                          | 281±4μs                       |    0.83 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 8, 1)                                       |
| -        | 596±3μs                          | 522±1μs                       |    0.88 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 8, 3)                                       |
| -        | 229±5μs                          | 196±5μs                       |    0.85 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 4, 0)                             |
| -        | 303±3μs                          | 257±6μs                       |    0.85 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 4, 1)                             |
| -        | 440±3μs                          | 390±3μs                       |    0.89 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 4, 2)                             |
| -        | 440±2μs                          | 390±3μs                       |    0.89 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 4, 3)                             |
| -        | 284±2μs                          | 245±1μs                       |    0.86 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 8, 0)                             |
| -        | 401±3μs                          | 353±8μs                       |    0.88 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 8, 1)                             |
| -        | 666±5μs                          | 575±20μs                      |    0.86 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 8, 2)                             |
| -        | 658±1μs                          | 575±2μs                       |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 8, 3)                             |
| -        | 27.3±0.4ms                       | 23.2±0.8ms                    |    0.85 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('multiplier', 4, 0)                                |
| -        | 30.0±0.2ms                       | 25.9±0.4ms                    |    0.86 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('multiplier', 4, 1)                                |
| -        | 31.8±0.03ms                      | 27.2±0.05ms                   |    0.86 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('multiplier', 4, 2)                                |
| -        | 31.8±0.1ms                       | 27.5±0.3ms                    |    0.86 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('multiplier', 4, 3)                                |
| -        | 67.7±0.9ms                       | 3.04±0.02ms                   |    0.04 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('multiplier', 8, 3)                                |
| -        | 54.5±0.1ms                       | 47.7±1ms                      |    0.88 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 4, 0)                                       |
| -        | 56.3±0.05ms                      | 49.0±0.9ms                    |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 4, 1)                                       |
| -        | 57.5±0.5ms                       | 50.1±0.9ms                    |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 4, 2)                                       |
| -        | 57.1±0.1ms                       | 49.3±1ms                      |    0.86 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 4, 3)                                       |
| -        | 152±0.4ms                        | 132±1ms                       |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 8, 0)                                       |
| -        | 165±0.6ms                        | 143±1ms                       |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 8, 1)                                       |
| -        | 172±3ms                          | 152±0.8ms                     |    0.89 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 8, 2)                                       |
| -        | 171±0.9ms                        | 147±1ms                       |    0.86 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 8, 3)                                       |
| -        | 24.8±0.06ms                      | 21.4±0.4ms                    |    0.86 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 4, 0)                                   |
| -        | 30.3±0.3ms                       | 25.7±0.04ms                   |    0.85 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 4, 1)                                   |
| -        | 31.5±0.03ms                      | 27.0±0.1ms                    |    0.86 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 4, 2)                                   |
| -        | 31.7±0.08ms                      | 26.9±0.04ms                   |    0.85 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 4, 3)                                   |
| -        | 27.5±0.03ms                      | 24.4±0.4ms                    |    0.88 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 8, 0)                                   |
| -        | 40.2±0.8ms                       | 33.4±0.1ms                    |    0.83 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 8, 1)                                   |
| -        | 42.5±0.3ms                       | 37.0±1ms                      |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 8, 2)                                   |
| -        | 42.7±0.2ms                       | 36.2±0.08ms                   |    0.85 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 8, 3)                                   |
| -        | 16.4±0.2ms                       | 14.9±0.2ms                    |    0.91 | transpiler_levels.TranspilerLevelBenchmarks.time_quantum_volume_transpile_50_x_20(0)                          |
| -        | 42.1±0.6ms                       | 37.0±0.4ms                    |    0.88 | transpiler_levels.TranspilerLevelBenchmarks.time_quantum_volume_transpile_50_x_20(1)                          |
| -        | 169±3ms                          | 146±0.4ms                     |    0.86 | transpiler_levels.TranspilerLevelBenchmarks.time_quantum_volume_transpile_50_x_20(2)                          |
| -        | 202±2ms                          | 174±1ms                       |    0.86 | transpiler_levels.TranspilerLevelBenchmarks.time_quantum_volume_transpile_50_x_20(3)                          |
| -        | 7.47±0.1ms                       | 6.67±0.05ms                   |    0.89 | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_from_large_qasm(1)                                 |
| -        | 20.5±0.4ms                       | 16.8±0.1ms                    |    0.82 | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_from_large_qasm_backend_with_prop(0)               |
| -        | 27.0±0.4ms                       | 22.5±0.06ms                   |    0.83 | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_from_large_qasm_backend_with_prop(1)               |
| -        | 8.49±0.2ms                       | 7.29±0.2ms                    |    0.86 | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_qv_14_x_14(0)                                      |
| -        | 12.2±0.2ms                       | 10.9±0.3ms                    |    0.89 | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_qv_14_x_14(1)                                      |
| -        | 27.9±0.4ms                       | 23.3±0.1ms                    |    0.83 | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_qv_14_x_14(3)                                      |
| -        | 7.71±0.07ms                      | 6.83±0.07ms                   |    0.89 | transpiler_qualitative.TranspilerQualitativeBench.time_transpile_time_cnt3_5_179(2)                           |
| -        | 10.9±0.6ms                       | 9.14±0.03ms                   |    0.84 | transpiler_qualitative.TranspilerQualitativeBench.time_transpile_time_cnt3_5_179(3)                           |
| -        | 5.09±0.1ms                       | 4.43±0.03ms                   |    0.87 | transpiler_qualitative.TranspilerQualitativeBench.time_transpile_time_cnt3_5_180(1)                           |
| -        | 14.1±0.2ms                       | 12.3±0.4ms                    |    0.87 | transpiler_qualitative.TranspilerQualitativeBench.time_transpile_time_cnt3_5_180(2)                           |
| -        | 20.1±0.5ms                       | 17.7±0.3ms                    |    0.88 | transpiler_qualitative.TranspilerQualitativeBench.time_transpile_time_cnt3_5_180(3)                           |
| -        | 5.12±0.05ms                      | 4.61±0.05ms                   |    0.9  | transpiler_qualitative.TranspilerQualitativeBench.time_transpile_time_qft_16(1)                               |
| -        | 4.67±0.02ms                      | 4.18±0.02ms                   |    0.89 | transpiler_qualitative.TranspilerQualitativeBench.time_transpile_time_qft_16(2)                               |
| -        | 4.79±0.03ms                      | 4.25±0.06ms                   |    0.89 | transpiler_qualitative.TranspilerQualitativeBench.time_transpile_time_qft_16(3)                               |
| -        | 4.67±0.04ms                      | 3.96±0.01ms                   |    0.85 | utility_scale.UtilityScaleBenchmarks.time_bvlike('cx')                                                        |
| -        | 4.59±0.01ms                      | 3.99±0.06ms                   |    0.87 | utility_scale.UtilityScaleBenchmarks.time_bvlike('cz')                                                        |
| -        | 4.60±0.01ms                      | 3.96±0.01ms                   |    0.86 | utility_scale.UtilityScaleBenchmarks.time_bvlike('ecr')                                                       |
| -        | 176±2ms                          | 159±0.6ms                     |    0.9  | utility_scale.UtilityScaleBenchmarks.time_qaoa('cx')                                                          |
| -        | 286±1ms                          | 253±2ms                       |    0.88 | utility_scale.UtilityScaleBenchmarks.time_qft('cx')                                                           |
| -        | 333±1ms                          | 296±2ms                       |    0.89 | utility_scale.UtilityScaleBenchmarks.time_qft('cz')                                                           |
| -        | 351±7ms                          | 300±0.9ms                     |    0.85 | utility_scale.UtilityScaleBenchmarks.time_qft('ecr')                                                          |
| -        | 511±3ms                          | 453±1ms                       |    0.89 | utility_scale.UtilityScaleBenchmarks.time_qv('cx')                                                            |
| -        | 547±3ms                          | 484±1ms                       |    0.89 | utility_scale.UtilityScaleBenchmarks.time_qv('cz')                                                            |
| -        | 550±5ms                          | 486±3ms                       |    0.88 | utility_scale.UtilityScaleBenchmarks.time_qv('ecr')                                                           |
| -        | 63.8±0.6ms                       | 57.3±0.9ms                    |    0.9  | utility_scale.UtilityScaleBenchmarks.time_square_heisenberg('cx')                                             |
| -        | 70.5±0.6ms                       | 62.8±0.5ms                    |    0.89 | utility_scale.UtilityScaleBenchmarks.time_square_heisenberg('cz')                                             |
| -        | 69.4±1ms                         | 62.0±0.4ms                    |    0.89 | utility_scale.UtilityScaleBenchmarks.time_square_heisenberg('ecr')                                            |

@mtreinish
Copy link
Copy Markdown
Member Author

Then on the linux system:

| Change   | Before [0d63a936] <mimalloc~1>   | After [0bba0eef]    |   Ratio | Benchmark (Parameter)                                                                                           |
|----------|----------------------------------|---------------------|---------|-----------------------------------------------------------------------------------------------------------------|
| -        | 951±4μs                          | 574±30μs            |    0.6  | circuit_construction.CircuitConstructionBench.time_circuit_copy(1, 131072)                                      |
| -        | 317±20μs                         | 142±1μs             |    0.45 | circuit_construction.CircuitConstructionBench.time_circuit_copy(1, 32768)                                       |
| -        | 6.23±0.02μs                      | 5.24±0.04μs         |    0.84 | circuit_construction.CircuitConstructionBench.time_circuit_copy(14, 128)                                        |
| -        | 908±20μs                         | 713±100μs           |    0.79 | circuit_construction.CircuitConstructionBench.time_circuit_copy(14, 131072)                                     |
| -        | 15.7±0.1μs                       | 13.9±0.06μs         |    0.88 | circuit_construction.CircuitConstructionBench.time_circuit_copy(14, 2048)                                       |
| -        | 311±20μs                         | 144±0.7μs           |    0.46 | circuit_construction.CircuitConstructionBench.time_circuit_copy(14, 32768)                                      |
| -        | 5.78±0.02μs                      | 4.72±0.03μs         |    0.82 | circuit_construction.CircuitConstructionBench.time_circuit_copy(14, 8)                                          |
| -        | 903±10μs                         | 579±4μs             |    0.64 | circuit_construction.CircuitConstructionBench.time_circuit_copy(2, 131072)                                      |
| -        | 309±20μs                         | 143±2μs             |    0.46 | circuit_construction.CircuitConstructionBench.time_circuit_copy(2, 32768)                                       |
| -        | 9.03±0.6μs                       | 6.06±0.03μs         |    0.67 | circuit_construction.CircuitConstructionBench.time_circuit_copy(20, 128)                                        |
| -        | 924±7μs                          | 583±5μs             |    0.63 | circuit_construction.CircuitConstructionBench.time_circuit_copy(20, 131072)                                     |
| -        | 25.0±0.08μs                      | 14.9±0.02μs         |    0.59 | circuit_construction.CircuitConstructionBench.time_circuit_copy(20, 2048)                                       |
| -        | 314±20μs                         | 146±0.5μs           |    0.46 | circuit_construction.CircuitConstructionBench.time_circuit_copy(20, 32768)                                      |
| -        | 7.52±0.4μs                       | 5.55±0.04μs         |    0.74 | circuit_construction.CircuitConstructionBench.time_circuit_copy(20, 8)                                          |
| -        | 85.6±20μs                        | 42.1±0.1μs          |    0.49 | circuit_construction.CircuitConstructionBench.time_circuit_copy(20, 8192)                                       |
| -        | 909±10μs                         | 583±5μs             |    0.64 | circuit_construction.CircuitConstructionBench.time_circuit_copy(5, 131072)                                      |
| -        | 309±20μs                         | 144±1μs             |    0.47 | circuit_construction.CircuitConstructionBench.time_circuit_copy(5, 32768)                                       |
| -        | 923±10μs                         | 583±3μs             |    0.63 | circuit_construction.CircuitConstructionBench.time_circuit_copy(8, 131072)                                      |
| -        | 23.1±0.04μs                      | 13.2±0.04μs         |    0.57 | circuit_construction.CircuitConstructionBench.time_circuit_copy(8, 2048)                                        |
| -        | 311±10μs                         | 144±0.9μs           |    0.46 | circuit_construction.CircuitConstructionBench.time_circuit_copy(8, 32768)                                       |
| -        | 4.35±0.1μs                       | 3.81±0.03μs         |    0.88 | circuit_construction.CircuitConstructionBench.time_circuit_copy(8, 8)                                           |
| -        | 81.8±20μs                        | 40.4±0.3μs          |    0.49 | circuit_construction.CircuitConstructionBench.time_circuit_copy(8, 8192)                                        |
| -        | 9.26±0.1μs                       | 8.09±0.2μs          |    0.87 | circuit_construction.CircuitConstructionBench.time_circuit_extend(14, 128)                                      |
| -        | 6.75±0.03μs                      | 5.71±0.04μs         |    0.85 | circuit_construction.CircuitConstructionBench.time_circuit_extend(14, 8)                                        |
| -        | 11.4±0.04μs                      | 9.43±0.1μs          |    0.83 | circuit_construction.CircuitConstructionBench.time_circuit_extend(20, 128)                                      |
| -        | 8.72±0.04μs                      | 6.86±0.03μs         |    0.79 | circuit_construction.CircuitConstructionBench.time_circuit_extend(20, 8)                                        |
| -        | 7.19±0.04μs                      | 6.51±0.2μs          |    0.91 | circuit_construction.CircuitConstructionBench.time_circuit_extend(5, 128)                                       |
| -        | 270±3μs                          | 236±2μs             |    0.87 | circuit_construction.ParamaterizedDifferentCircuit.time_DTC100_set_build(10, 10)                                |
| -        | 2.71±0.01ms                      | 2.13±0.01ms         |    0.79 | circuit_construction.ParamaterizedDifferentCircuit.time_DTC100_set_build(10, 150)                               |
| -        | 963±4μs                          | 760±5μs             |    0.79 | circuit_construction.ParamaterizedDifferentCircuit.time_DTC100_set_build(10, 50)                                |
| -        | 4.94±0.03ms                      | 3.67±0.01ms         |    0.74 | circuit_construction.ParamaterizedDifferentCircuit.time_DTC100_set_build(100, 10)                               |
| -        | 69.4±1ms                         | 47.4±0.6ms          |    0.68 | circuit_construction.ParamaterizedDifferentCircuit.time_DTC100_set_build(100, 150)                              |
| -        | 23.5±0.7ms                       | 16.0±0.02ms         |    0.68 | circuit_construction.ParamaterizedDifferentCircuit.time_DTC100_set_build(100, 50)                               |
| -        | 1.61±0.01ms                      | 1.25±0ms            |    0.78 | circuit_construction.ParamaterizedDifferentCircuit.time_DTC100_set_build(50, 10)                                |
| -        | 21.4±0.5ms                       | 14.1±0.06ms         |    0.66 | circuit_construction.ParamaterizedDifferentCircuit.time_DTC100_set_build(50, 150)                               |
| -        | 7.20±0.05ms                      | 5.05±0.03ms         |    0.7  | circuit_construction.ParamaterizedDifferentCircuit.time_DTC100_set_build(50, 50)                                |
| -        | 407±8μs                          | 304±4μs             |    0.75 | circuit_construction.ParamaterizedDifferentCircuit.time_QV100_build(100, 50)                                    |
| -        | 550±8μs                          | 426±1μs             |    0.77 | circuit_construction.ParamaterizedDifferentCircuit.time_QV100_build(50, 150)                                    |
| -        | 39.1±0.1μs                       | 35.3±0.04μs         |    0.9  | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 128, 8)                                 |
| -        | 56.8±1ms                         | 42.4±0.1ms          |    0.75 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 131072, 128)                            |
| -        | 309±10ms                         | 252±7ms             |    0.82 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 131072, 131072)                         |
| -        | 58.4±0.3ms                       | 48.9±0.2ms          |    0.84 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 131072, 2048)                           |
| -        | 105±2ms                          | 87.8±2ms            |    0.83 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 131072, 32768)                          |
| -        | 59.4±0.8ms                       | 42.8±1ms            |    0.72 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 131072, 8)                              |
| -        | 69.8±0.5ms                       | 61.6±0.5ms          |    0.88 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 131072, 8192)                           |
| -        | 498±5μs                          | 430±2μs             |    0.86 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 2048, 128)                              |
| -        | 2.20±0.02ms                      | 1.96±0.02ms         |    0.89 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 2048, 2048)                             |
| -        | 387±9μs                          | 330±2μs             |    0.85 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 2048, 8)                                |
| -        | 8.46±0.1ms                       | 5.76±0.03ms         |    0.68 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 32768, 128)                             |
| -        | 10.9±0.05ms                      | 8.57±0.04ms         |    0.79 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 32768, 2048)                            |
| -        | 63.6±2ms                         | 54.1±2ms            |    0.85 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 32768, 32768)                           |
| -        | 8.53±0.07ms                      | 5.65±0.07ms         |    0.66 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 32768, 8)                               |
| -        | 19.3±0.3ms                       | 16.9±0.1ms          |    0.88 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 32768, 8192)                            |
| -        | 21.5±0.1μs                       | 18.9±0.04μs         |    0.88 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 8, 8)                                   |
| -        | 3.37±0.02ms                      | 2.93±0.02ms         |    0.87 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 8192, 2048)                             |
| -        | 9.78±0.2ms                       | 8.28±0.07ms         |    0.85 | circuit_construction.ParameterizedCircuitBindBench.time_bind_params(20, 8192, 8192)                             |
| -        | 419±0.9μs                        | 378±3μs             |    0.9  | circuit_construction.ParameterizedCircuitConstructionBench.time_build_parameterized_circuit(20, 128, 128)       |
| -        | 445±8ms                          | 357±5ms             |    0.8  | circuit_construction.ParameterizedCircuitConstructionBench.time_build_parameterized_circuit(20, 131072, 131072) |
| -        | 353±2ms                          | 317±3ms             |    0.9  | circuit_construction.ParameterizedCircuitConstructionBench.time_build_parameterized_circuit(20, 131072, 32768)  |
| -        | 5.59±0.02ms                      | 4.97±0.04ms         |    0.89 | circuit_construction.ParameterizedCircuitConstructionBench.time_build_parameterized_circuit(20, 2048, 2048)     |
| -        | 102±0.9ms                        | 84.1±0.8ms          |    0.83 | circuit_construction.ParameterizedCircuitConstructionBench.time_build_parameterized_circuit(20, 32768, 32768)   |
| -        | 22.4±0.08ms                      | 19.8±0.06ms         |    0.88 | circuit_construction.ParameterizedCircuitConstructionBench.time_build_parameterized_circuit(20, 8192, 8192)     |
| -        | 13.2±0.05μs                      | 10.5±0.02μs         |    0.8  | converters.ConverterBenchmarks.time_circuit_to_dag(1, 128)                                                      |
| -        | 160±0.7μs                        | 134±0.8μs           |    0.84 | converters.ConverterBenchmarks.time_circuit_to_dag(1, 2048)                                                     |
| -        | 3.32±0.03μs                      | 2.84±0.02μs         |    0.85 | converters.ConverterBenchmarks.time_circuit_to_dag(1, 8)                                                        |
| -        | 648±3μs                          | 551±3μs             |    0.85 | converters.ConverterBenchmarks.time_circuit_to_dag(1, 8192)                                                     |
| -        | 110±0.4μs                        | 84.4±0.2μs          |    0.77 | converters.ConverterBenchmarks.time_circuit_to_dag(14, 128)                                                     |
| -        | 1.31±0.01ms                      | 1.14±0.01ms         |    0.87 | converters.ConverterBenchmarks.time_circuit_to_dag(14, 2048)                                                    |
| -        | 17.4±0.09μs                      | 12.7±0.05μs         |    0.73 | converters.ConverterBenchmarks.time_circuit_to_dag(14, 8)                                                       |
| -        | 18.6±0.1μs                       | 14.8±0.1μs          |    0.8  | converters.ConverterBenchmarks.time_circuit_to_dag(2, 128)                                                      |
| -        | 245±2μs                          | 208±1μs             |    0.85 | converters.ConverterBenchmarks.time_circuit_to_dag(2, 2048)                                                     |
| -        | 4.82±0.02μs                      | 3.67±0.03μs         |    0.76 | converters.ConverterBenchmarks.time_circuit_to_dag(2, 8)                                                        |
| -        | 987±4μs                          | 859±3μs             |    0.87 | converters.ConverterBenchmarks.time_circuit_to_dag(2, 8192)                                                     |
| -        | 158±0.6μs                        | 121±0.2μs           |    0.77 | converters.ConverterBenchmarks.time_circuit_to_dag(20, 128)                                                     |
| -        | 24.2±0.3μs                       | 17.2±0.04μs         |    0.71 | converters.ConverterBenchmarks.time_circuit_to_dag(20, 8)                                                       |
| -        | 257±0.4μs                        | 198±0.9μs           |    0.77 | converters.ConverterBenchmarks.time_circuit_to_dag(32, 128)                                                     |
| -        | 36.5±0.3μs                       | 26.0±0.09μs         |    0.71 | converters.ConverterBenchmarks.time_circuit_to_dag(32, 8)                                                       |
| -        | 40.2±0.2μs                       | 31.2±0.08μs         |    0.78 | converters.ConverterBenchmarks.time_circuit_to_dag(5, 128)                                                      |
| -        | 470±1μs                          | 408±2μs             |    0.87 | converters.ConverterBenchmarks.time_circuit_to_dag(5, 2048)                                                     |
| -        | 8.55±0.03μs                      | 6.31±0.03μs         |    0.74 | converters.ConverterBenchmarks.time_circuit_to_dag(5, 8)                                                        |
| -        | 1.86±0.02ms                      | 1.66±0.01ms         |    0.89 | converters.ConverterBenchmarks.time_circuit_to_dag(5, 8192)                                                     |
| -        | 430±0.6μs                        | 330±0.3μs           |    0.77 | converters.ConverterBenchmarks.time_circuit_to_dag(53, 128)                                                     |
| -        | 58.6±0.2μs                       | 41.4±0.1μs          |    0.71 | converters.ConverterBenchmarks.time_circuit_to_dag(53, 8)                                                       |
| -        | 63.1±0.2μs                       | 48.3±0.2μs          |    0.76 | converters.ConverterBenchmarks.time_circuit_to_dag(8, 128)                                                      |
| -        | 723±4μs                          | 631±2μs             |    0.87 | converters.ConverterBenchmarks.time_circuit_to_dag(8, 2048)                                                     |
| -        | 11.3±0.1μs                       | 8.37±0.01μs         |    0.74 | converters.ConverterBenchmarks.time_circuit_to_dag(8, 8)                                                        |
| -        | 2.78±0.01ms                      | 2.52±0.01ms         |    0.9  | converters.ConverterBenchmarks.time_circuit_to_dag(8, 8192)                                                     |
| -        | 65.3±0.3μs                       | 51.7±0.2μs          |    0.79 | converters.ConverterBenchmarks.time_circuit_to_instruction(1, 2048)                                             |
| -        | 220±0.5μs                        | 196±5μs             |    0.89 | converters.ConverterBenchmarks.time_circuit_to_instruction(1, 8192)                                             |
| -        | 78.7±1μs                         | 45.0±0.4μs          |    0.57 | converters.ConverterBenchmarks.time_circuit_to_instruction(14, 128)                                             |
| -        | 506±5μs                          | 388±10μs            |    0.77 | converters.ConverterBenchmarks.time_circuit_to_instruction(14, 2048)                                            |
| -        | 26.1±0.1μs                       | 20.9±0.05μs         |    0.8  | converters.ConverterBenchmarks.time_circuit_to_instruction(14, 8)                                               |
| -        | 89.3±0.3μs                       | 72.7±3μs            |    0.81 | converters.ConverterBenchmarks.time_circuit_to_instruction(2, 2048)                                             |
| -        | 314±1μs                          | 276±3μs             |    0.88 | converters.ConverterBenchmarks.time_circuit_to_instruction(2, 8192)                                             |
| -        | 113±1μs                          | 61.4±0.3μs          |    0.55 | converters.ConverterBenchmarks.time_circuit_to_instruction(20, 128)                                             |
| -        | 33.6±0.2μs                       | 25.3±0.1μs          |    0.75 | converters.ConverterBenchmarks.time_circuit_to_instruction(20, 8)                                               |
| -        | 182±1μs                          | 94.9±2μs            |    0.52 | converters.ConverterBenchmarks.time_circuit_to_instruction(32, 128)                                             |
| -        | 46.6±0.3μs                       | 33.1±0.3μs          |    0.71 | converters.ConverterBenchmarks.time_circuit_to_instruction(32, 8)                                               |
| -        | 29.5±0.07μs                      | 22.7±0.04μs         |    0.77 | converters.ConverterBenchmarks.time_circuit_to_instruction(5, 128)                                              |
| -        | 153±0.8μs                        | 118±5μs             |    0.77 | converters.ConverterBenchmarks.time_circuit_to_instruction(5, 2048)                                             |
| -        | 297±2μs                          | 148±3μs             |    0.5  | converters.ConverterBenchmarks.time_circuit_to_instruction(53, 128)                                             |
| -        | 70.7±0.3μs                       | 47.7±0.5μs          |    0.67 | converters.ConverterBenchmarks.time_circuit_to_instruction(53, 8)                                               |
| -        | 43.9±0.05μs                      | 29.9±0.07μs         |    0.68 | converters.ConverterBenchmarks.time_circuit_to_instruction(8, 128)                                              |
| -        | 240±0.8μs                        | 170±0.7μs           |    0.71 | converters.ConverterBenchmarks.time_circuit_to_instruction(8, 2048)                                             |
| -        | 19.4±0.04μs                      | 16.9±0.05μs         |    0.87 | converters.ConverterBenchmarks.time_circuit_to_instruction(8, 8)                                                |
| -        | 794±0.4μs                        | 720±10μs            |    0.91 | converters.ConverterBenchmarks.time_circuit_to_instruction(8, 8192)                                             |
| -        | 113±6μs                          | 100±2μs             |    0.89 | converters.ConverterBenchmarks.time_dag_to_circuit(1, 2048)                                                     |
| -        | 446±20μs                         | 381±9μs             |    0.85 | converters.ConverterBenchmarks.time_dag_to_circuit(1, 8192)                                                     |
| -        | 107±10μs                         | 85.0±0.3μs          |    0.8  | converters.ConverterBenchmarks.time_dag_to_circuit(14, 128)                                                     |
| -        | 1.37±0.1ms                       | 1.17±0.02ms         |    0.86 | converters.ConverterBenchmarks.time_dag_to_circuit(14, 2048)                                                    |
| -        | 30.9±2μs                         | 27.6±0.09μs         |    0.89 | converters.ConverterBenchmarks.time_dag_to_circuit(14, 8)                                                       |
| -        | 19.4±0.9μs                       | 17.0±0.3μs          |    0.88 | converters.ConverterBenchmarks.time_dag_to_circuit(2, 128)                                                      |
| -        | 43.4±3μs                         | 38.1±0.2μs          |    0.88 | converters.ConverterBenchmarks.time_dag_to_circuit(20, 8)                                                       |
| -        | 259±40μs                         | 209±3μs             |    0.81 | converters.ConverterBenchmarks.time_dag_to_circuit(32, 128)                                                     |
| -        | 67.4±5μs                         | 58.5±0.04μs         |    0.87 | converters.ConverterBenchmarks.time_dag_to_circuit(32, 8)                                                       |
| -        | 42.2±6μs                         | 33.6±0.4μs          |    0.8  | converters.ConverterBenchmarks.time_dag_to_circuit(5, 128)                                                      |
| -        | 480±40μs                         | 382±2μs             |    0.8  | converters.ConverterBenchmarks.time_dag_to_circuit(5, 2048)                                                     |
| -        | 448±50μs                         | 348±5μs             |    0.78 | converters.ConverterBenchmarks.time_dag_to_circuit(53, 128)                                                     |
| -        | 105±8μs                          | 92.8±0.1μs          |    0.88 | converters.ConverterBenchmarks.time_dag_to_circuit(53, 8)                                                       |
| -        | 60.8±9μs                         | 48.5±0.3μs          |    0.8  | converters.ConverterBenchmarks.time_dag_to_circuit(8, 128)                                                      |
| -        | 300±2ms                          | 225±0.4ms           |    0.75 | mapping_passes.PassBenchmarks.time_basic_swap(14, 1024)                                                         |
| -        | 533±5ms                          | 376±0.8ms           |    0.7  | mapping_passes.PassBenchmarks.time_basic_swap(20, 1024)                                                         |
| -        | 70.0±0.6ms                       | 55.8±0.3ms          |    0.8  | mapping_passes.PassBenchmarks.time_basic_swap(5, 1024)                                                          |
| -        | 1.95±0.01ms                      | 1.62±0.02ms         |    0.83 | passes.CommutativeAnalysisPassBenchmarks.time_commutative_cancellation(14, 1024)                                |
| -        | 2.76±0.01ms                      | 2.36±0.04ms         |    0.86 | passes.CommutativeAnalysisPassBenchmarks.time_commutative_cancellation(20, 1024)                                |
| -        | 831±7μs                          | 673±20μs            |    0.81 | passes.CommutativeAnalysisPassBenchmarks.time_commutative_cancellation(5, 1024)                                 |
| -        | 608±20μs                         | 520±3μs             |    0.85 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('grover', 16)                          |
| -        | 110±5μs                          | 86.2±0.5μs          |    0.79 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('grover', 8)                           |
| -        | 1.04±0.03ms                      | 914±4μs             |    0.88 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('mcx', 128)                            |
| -        | 65.6±3μs                         | 51.2±0.2μs          |    0.78 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('mcx', 16)                             |
| -        | 3.26±0.04ms                      | 2.83±0.01ms         |    0.87 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('mcx', 256)                            |
| -        | 152±6μs                          | 125±0.6μs           |    0.82 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('mcx', 32)                             |
| -        | 10.7±0.1ms                       | 9.75±0.05ms         |    0.91 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('mcx', 512)                            |
| -        | 371±10μs                         | 324±2μs             |    0.87 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('mcx', 64)                             |
| -        | 29.0±0.6μs                       | 23.0±0.09μs         |    0.8  | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('mcx', 8)                              |
| -        | 64.3±2μs                         | 51.6±0.2μs          |    0.8  | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('modular_adder', 16)                   |
| -        | 208±5μs                          | 186±0.5μs           |    0.89 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('modular_adder', 32)                   |
| -        | 28.3±0.5μs                       | 23.2±0.1μs          |    0.82 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('modular_adder', 8)                    |
| -        | 386±20μs                         | 308±2μs             |    0.8  | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('multiplier', 16)                      |
| -        | 351±5ms                          | 282±0.7ms           |    0.8  | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('multiplier', 256)                     |
| -        | 1.79±0.05ms                      | 1.51±0.01ms         |    0.84 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('multiplier', 32)                      |
| -        | 8.55±0.03ms                      | 7.77±0.04ms         |    0.91 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('multiplier', 64)                      |
| -        | 63.3±2μs                         | 47.1±0.1μs          |    0.75 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('multiplier', 8)                       |
| -        | 83.5±0.9ms                       | 74.3±0.5ms          |    0.89 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('qaoa', 128)                           |
| -        | 591±10μs                         | 480±3μs             |    0.81 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('qaoa', 16)                            |
| -        | 579±7ms                          | 465±4ms             |    0.8  | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('qaoa', 256)                           |
| -        | 2.79±0.02ms                      | 2.37±0.01ms         |    0.85 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('qaoa', 32)                            |
| -        | 13.8±0.3ms                       | 12.2±0.08ms         |    0.89 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('qaoa', 64)                            |
| -        | 136±4μs                          | 106±0.5μs           |    0.78 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('qaoa', 8)                             |
| -        | 17.1±0.2ms                       | 14.3±0.07ms         |    0.84 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('qft', 128)                            |
| -        | 138±6μs                          | 102±0.2μs           |    0.74 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('qft', 16)                             |
| -        | 122±2ms                          | 96.4±0.5ms          |    0.79 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('qft', 256)                            |
| -        | 588±20μs                         | 467±2μs             |    0.79 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('qft', 32)                             |
| -        | 842±20ms                         | 659±2ms             |    0.78 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('qft', 512)                            |
| -        | 2.88±0.04ms                      | 2.42±0.03ms         |    0.84 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('qft', 64)                             |
| -        | 41.0±1μs                         | 29.9±0.08μs         |    0.73 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('qft', 8)                              |
| -        | 5.65±0.04ms                      | 4.97±0.03ms         |    0.88 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('trotter', 128)                        |
| -        | 385±20μs                         | 324±1μs             |    0.84 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('trotter', 16)                         |
| -        | 16.8±0.1ms                       | 14.7±0.2ms          |    0.88 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('trotter', 256)                        |
| -        | 877±40μs                         | 760±3μs             |    0.87 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('trotter', 32)                         |
| -        | 55.7±0.8ms                       | 47.7±0.5ms          |    0.86 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('trotter', 512)                        |
| -        | 2.07±0.06ms                      | 1.87±0.02ms         |    0.9  | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('trotter', 64)                         |
| -        | 170±10μs                         | 140±0.7μs           |    0.82 | passes.LitinskiTransformationPassBenchmarks.time_litinski_transformation('trotter', 8)                          |
| -        | 21.4±0.2ms                       | 17.6±0.3ms          |    0.82 | passes.MultipleBasisPassBenchmarks.time_basis_translator(14, 1024, ['rx', 'ry', 'rz', 'r', 'rxx', 'id'])        |
| -        | 13.9±0.3ms                       | 11.6±0.2ms          |    0.83 | passes.MultipleBasisPassBenchmarks.time_basis_translator(14, 1024, ['rz', 'x', 'sx', 'cx', 'id'])               |
| -        | 9.58±0.1ms                       | 8.28±0.1ms          |    0.86 | passes.MultipleBasisPassBenchmarks.time_basis_translator(14, 1024, ['u', 'cx', 'id'])                           |
| -        | 31.8±0.7ms                       | 25.3±0.2ms          |    0.8  | passes.MultipleBasisPassBenchmarks.time_basis_translator(20, 1024, ['rx', 'ry', 'rz', 'r', 'rxx', 'id'])        |
| -        | 18.9±0.3ms                       | 16.2±0.3ms          |    0.86 | passes.MultipleBasisPassBenchmarks.time_basis_translator(20, 1024, ['rz', 'x', 'sx', 'cx', 'id'])               |
| -        | 13.2±0.3ms                       | 11.8±0.2ms          |    0.89 | passes.MultipleBasisPassBenchmarks.time_basis_translator(20, 1024, ['u', 'cx', 'id'])                           |
| -        | 7.41±0.09ms                      | 6.08±0.08ms         |    0.82 | passes.MultipleBasisPassBenchmarks.time_basis_translator(5, 1024, ['rx', 'ry', 'rz', 'r', 'rxx', 'id'])         |
| -        | 5.25±0.06ms                      | 4.39±0.06ms         |    0.84 | passes.MultipleBasisPassBenchmarks.time_basis_translator(5, 1024, ['rz', 'x', 'sx', 'cx', 'id'])                |
| -        | 3.63±0.06ms                      | 3.10±0.04ms         |    0.85 | passes.MultipleBasisPassBenchmarks.time_basis_translator(5, 1024, ['u', 'cx', 'id'])                            |
| -        | 920±50μs                         | 800±2μs             |    0.87 | passes.MultipleBasisPassBenchmarks.time_optimize_1q_decompose(14, 1024, ['rz', 'x', 'sx', 'cx', 'id'])          |
| -        | 807±50μs                         | 704±1μs             |    0.87 | passes.MultipleBasisPassBenchmarks.time_optimize_1q_decompose(14, 1024, ['u', 'cx', 'id'])                      |
| -        | 1.31±0.08ms                      | 1.17±0.01ms         |    0.89 | passes.MultipleBasisPassBenchmarks.time_optimize_1q_decompose(20, 1024, ['rz', 'x', 'sx', 'cx', 'id'])          |
| -        | 1.11±0.05ms                      | 1.01±0.01ms         |    0.91 | passes.MultipleBasisPassBenchmarks.time_optimize_1q_decompose(20, 1024, ['u', 'cx', 'id'])                      |
| -        | 348±30μs                         | 286±0.8μs           |    0.82 | passes.MultipleBasisPassBenchmarks.time_optimize_1q_decompose(5, 1024, ['rz', 'x', 'sx', 'cx', 'id'])           |
| -        | 300±20μs                         | 252±1μs             |    0.84 | passes.MultipleBasisPassBenchmarks.time_optimize_1q_decompose(5, 1024, ['u', 'cx', 'id'])                       |
| -        | 53.6±1ms                         | 47.0±0.8ms          |    0.88 | passes.PassBenchmarks.time_commutation_analysis(14, 1024)                                                       |
| -        | 78.9±2ms                         | 69.5±1ms            |    0.88 | passes.PassBenchmarks.time_commutation_analysis(20, 1024)                                                       |
| -        | 17.4±0.5ms                       | 15.2±0.3ms          |    0.87 | passes.PassBenchmarks.time_commutation_analysis(5, 1024)                                                        |
| -        | 389±50μs                         | 327±5μs             |    0.84 | passes.PassBenchmarks.time_count_ops_longest_path(14, 1024)                                                     |
| -        | 610±90μs                         | 514±6μs             |    0.84 | passes.PassBenchmarks.time_count_ops_longest_path(20, 1024)                                                     |
| -        | 276±30μs                         | 235±2μs             |    0.85 | passes.PassBenchmarks.time_cx_cancellation(14, 1024)                                                            |
| -        | 443±40μs                         | 391±2μs             |    0.88 | passes.PassBenchmarks.time_cx_cancellation(20, 1024)                                                            |
| -        | 93.9±20μs                        | 73.3±0.5μs          |    0.78 | passes.PassBenchmarks.time_cx_cancellation(5, 1024)                                                             |
| -        | 524±50μs                         | 461±3μs             |    0.88 | passes.PassBenchmarks.time_dag_longest_path(14, 1024)                                                           |
| -        | 379±50μs                         | 326±4μs             |    0.86 | passes.PassBenchmarks.time_depth_pass(14, 1024)                                                                 |
| -        | 135±40μs                         | 98.5±0.7μs          |    0.73 | passes.PassBenchmarks.time_depth_pass(5, 1024)                                                                  |
| -        | 526±7μs                          | 427±2μs             |    0.81 | passes.PassBenchmarks.time_unroll_3q_or_more(14, 1024)                                                          |
| -        | 977±4μs                          | 808±5μs             |    0.83 | passes.PassBenchmarks.time_unroll_3q_or_more(20, 1024)                                                          |
| -        | 96.3±2μs                         | 85.2±1μs            |    0.89 | passes.PassBenchmarks.time_unroll_3q_or_more(5, 1024)                                                           |
| -        | 7.36±0.1ms                       | 6.55±0.1ms          |    0.89 | qft.QftTranspileBench.time_ibmq_backend_transpile(13)                                                           |
| -        | 8.32±0.1ms                       | 7.38±0.07ms         |    0.89 | qft.QftTranspileBench.time_ibmq_backend_transpile(14)                                                           |
| -        | 3.25±0.04ms                      | 2.92±0.05ms         |    0.9  | qft.QftTranspileBench.time_ibmq_backend_transpile(3)                                                            |
| -        | 4.87±0.05ms                      | 4.26±0.06ms         |    0.88 | qft.QftTranspileBench.time_ibmq_backend_transpile(8)                                                            |
| -        | 23.5±0.2μs                       | 20.4±0.06μs         |    0.87 | qpy.ParameterizedBenchmarks.time_dump(20, 1)                                                                    |
| -        | 162±0.7μs                        | 136±2μs             |    0.84 | qpy.ParameterizedBenchmarks.time_dump(20, 10)                                                                   |
| -        | 86.0±0.8μs                       | 70.6±0.1μs          |    0.82 | qpy.ParameterizedBenchmarks.time_dump(20, 5)                                                                    |
| -        | 52.6±0.1μs                       | 44.4±0.2μs          |    0.84 | qpy.ParameterizedBenchmarks.time_dump(50, 1)                                                                    |
| -        | 406±3μs                          | 344±2μs             |    0.85 | qpy.ParameterizedBenchmarks.time_dump(50, 10)                                                                   |
| -        | 210±1μs                          | 173±0.6μs           |    0.83 | qpy.ParameterizedBenchmarks.time_dump(50, 5)                                                                    |
| -        | 44.7±0.4μs                       | 37.6±0.1μs          |    0.84 | qpy.ParameterizedBenchmarks.time_dump_and_load(20, 1)                                                           |
| -        | 272±9μs                          | 215±0.8μs           |    0.79 | qpy.ParameterizedBenchmarks.time_dump_and_load(20, 10)                                                          |
| -        | 141±0.4μs                        | 115±1μs             |    0.82 | qpy.ParameterizedBenchmarks.time_dump_and_load(20, 5)                                                           |
| -        | 90.0±0.6μs                       | 72.9±0.2μs          |    0.81 | qpy.ParameterizedBenchmarks.time_dump_and_load(50, 1)                                                           |
| -        | 685±4μs                          | 520±2μs             |    0.76 | qpy.ParameterizedBenchmarks.time_dump_and_load(50, 10)                                                          |
| -        | 361±2μs                          | 274±1μs             |    0.76 | qpy.ParameterizedBenchmarks.time_dump_and_load(50, 5)                                                           |
| -        | 1.85±0.01ms                      | 1.67±0.01ms         |    0.9  | qpy.RandomBenchmarks.time_dump(20, 256, 0)                                                                      |
| -        | 1.88±0.01ms                      | 1.70±0.01ms         |    0.9  | qpy.RandomBenchmarks.time_dump(20, 256, 42)                                                                     |
| -        | 9.56±0.08ms                      | 8.58±0.2ms          |    0.9  | qpy.RandomBenchmarks.time_dump_and_load(20, 1024, 0)                                                            |
| -        | 9.61±0.06ms                      | 8.65±0.09ms         |    0.9  | qpy.RandomBenchmarks.time_dump_and_load(20, 1024, 42)                                                           |
| -        | 2.47±0.01ms                      | 2.13±0.01ms         |    0.86 | qpy.RandomBenchmarks.time_dump_and_load(20, 256, 0)                                                             |
| -        | 2.50±0.01ms                      | 2.16±0ms            |    0.87 | qpy.RandomBenchmarks.time_dump_and_load(20, 256, 42)                                                            |
| -        | 5.10±0.04ms                      | 4.07±0.04ms         |    0.8  | quantum_info.CliffordDecomposeBench.time_decompose('3,100')                                                     |
| -        | 2.58±0.3ms                       | 360±7μs             |    0.14 | quantum_info.SparsePauliOpBench.time_to_matrix(10, 50)                                                          |
| -        | 135±40μs                         | 47.8±0.2μs          |    0.35 | quantum_info.SparsePauliOpBench.time_to_matrix(8, 50)                                                           |
| -        | 2.58±0.08ms                      | 373±10μs            |    0.14 | quantum_info.SparsePauliOpBench.time_to_operator(10, 50)                                                        |
| -        | 34.5±0.4ms                       | 30.6±0.3ms          |    0.89 | quantum_volume.QuantumVolumeBenchmark.time_ibmq_backend_transpile(20, 'synthesis')                              |
| -        | 28.4±0.3ms                       | 25.3±0.5ms          |    0.89 | quantum_volume.QuantumVolumeBenchmark.time_ibmq_backend_transpile(20, 'translator')                             |
| -        | 6.44±0.05ms                      | 5.75±0.07ms         |    0.89 | quantum_volume.QuantumVolumeBenchmark.time_ibmq_backend_transpile(8, 'translator')                              |
| -        | 4.12±0.03ms                      | 3.67±0.04ms         |    0.89 | queko.QUEKOTranspilerBench.time_transpile_bigd(3, 'sabre')                                                      |
| -        | 29.9±0.3ms                       | 27.1±0.09ms         |    0.91 | queko.QUEKOTranspilerBench.time_transpile_bss(2, 'sabre')                                                       |
| -        | 11.5±0.2ms                       | 10.5±0.02ms         |    0.91 | queko.QUEKOTranspilerBench.time_transpile_bss(2, None)                                                          |
| -        | 13.1±0.3ms                       | 11.9±0.04ms         |    0.91 | queko.QUEKOTranspilerBench.time_transpile_bss(3, None)                                                          |
| -        | 8.05±0.1ms                       | 7.31±0.1ms          |    0.91 | random_circuit_hex.BenchRandomCircuitHex.time_ibmq_backend_transpile(14)                                        |
| -        | 1.49±0.01s                       | 1.26±0s             |    0.85 | randomized_benchmarking.RandomizedBenchmarkingBenchmark.time_ibmq_backend_transpile_single_thread([0, 1])       |
| -        | 846±5ms                          | 758±1ms             |    0.9  | randomized_benchmarking.RandomizedBenchmarkingBenchmark.time_ibmq_backend_transpile_single_thread([0])          |
| -        | 3.03±0.1ms                       | 2.71±0.01ms         |    0.89 | ripple_adder.RippleAdderTranspile.time_transpile_square_grid_ripple_adder(10, 0)                                |
| -        | 4.52±0.1ms                       | 4.08±0.05ms         |    0.9  | ripple_adder.RippleAdderTranspile.time_transpile_square_grid_ripple_adder(10, 1)                                |
| -        | 8.30±0.08ms                      | 7.43±0.09ms         |    0.9  | ripple_adder.RippleAdderTranspile.time_transpile_square_grid_ripple_adder(10, 2)                                |
| -        | 9.80±0.1ms                       | 8.80±0.03ms         |    0.9  | ripple_adder.RippleAdderTranspile.time_transpile_square_grid_ripple_adder(10, 3)                                |
| -        | 14.9±0.3ms                       | 13.5±0.05ms         |    0.9  | ripple_adder.RippleAdderTranspile.time_transpile_square_grid_ripple_adder(20, 2)                                |
| -        | 4.79±0.1ms                       | 4.32±0.04ms         |    0.9  | transpiler_benchmarks.TranspilerBenchSuite.time_compile_from_large_qasm                                         |
| -        | 144±3ms                          | 130±2ms             |    0.91 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 128, 2)                                   |
| -        | 2.61±0.07ms                      | 2.30±0.01ms         |    0.88 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 16, 0)                                    |
| -        | 5.53±0.5ms                       | 4.66±0.01ms         |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 16, 1)                                    |
| -        | 12.6±0.5ms                       | 11.0±0.03ms         |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 16, 2)                                    |
| -        | 14.6±0.5ms                       | 12.9±0.06ms         |    0.88 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 16, 3)                                    |
| -        | 5.29±0.1ms                       | 4.73±0.02ms         |    0.89 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 32, 0)                                    |
| -        | 10.1±0.6ms                       | 8.77±0.03ms         |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 32, 1)                                    |
| -        | 33.7±1ms                         | 29.5±0.2ms          |    0.88 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 32, 2)                                    |
| -        | 45.2±1ms                         | 40.5±0.4ms          |    0.89 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 32, 3)                                    |
| -        | 10.3±0.2ms                       | 9.32±0.04ms         |    0.9  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 64, 0)                                    |
| -        | 23.9±1ms                         | 21.4±0.06ms         |    0.9  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 64, 1)                                    |
| -        | 69.5±2ms                         | 61.2±0.4ms          |    0.88 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 64, 2)                                    |
| -        | 92.6±3ms                         | 83.3±0.6ms          |    0.9  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 64, 3)                                    |
| -        | 762±20μs                         | 632±4μs             |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 8, 0)                                     |
| -        | 1.38±0.07ms                      | 1.14±0ms            |    0.82 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 8, 1)                                     |
| -        | 2.51±0.07ms                      | 2.17±0.01ms         |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 8, 2)                                     |
| -        | 2.91±0.07ms                      | 2.50±0.01ms         |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('grover', 8, 3)                                     |
| -        | 1.01±0.05ms                      | 843±6μs             |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 128, 0)                                      |
| -        | 1.97±0.2ms                       | 1.60±0ms            |    0.81 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 128, 1)                                      |
| -        | 6.05±0.3ms                       | 5.24±0.02ms         |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 128, 2)                                      |
| -        | 8.87±0.3ms                       | 7.45±0.03ms         |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 128, 3)                                      |
| -        | 299±9μs                          | 232±0.3μs           |    0.77 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 16, 0)                                       |
| -        | 454±30μs                         | 350±0.9μs           |    0.77 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 16, 1)                                       |
| -        | 985±30μs                         | 803±7μs             |    0.81 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 16, 2)                                       |
| -        | 1.31±0.04ms                      | 1.07±0.01ms         |    0.82 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 16, 3)                                       |
| -        | 401±10μs                         | 318±1μs             |    0.79 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 32, 0)                                       |
| -        | 695±50μs                         | 530±0.8μs           |    0.76 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 32, 1)                                       |
| -        | 1.75±0.07ms                      | 1.45±0.01ms         |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 32, 2)                                       |
| -        | 2.41±0.07ms                      | 2.00±0.01ms         |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 32, 3)                                       |
| -        | 603±30μs                         | 491±1μs             |    0.81 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 64, 0)                                       |
| -        | 1.13±0.1ms                       | 893±3μs             |    0.79 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 64, 1)                                       |
| -        | 3.25±0.1ms                       | 2.71±0.01ms         |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 64, 2)                                       |
| -        | 4.52±0.2ms                       | 3.84±0.01ms         |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 64, 3)                                       |
| -        | 247±6μs                          | 190±1μs             |    0.77 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 8, 0)                                        |
| -        | 329±10μs                         | 258±4μs             |    0.78 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 8, 1)                                        |
| -        | 577±10μs                         | 467±2μs             |    0.81 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 8, 2)                                        |
| -        | 732±20μs                         | 590±4μs             |    0.81 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('mcx', 8, 3)                                        |
| -        | 1.34±0.04ms                      | 1.13±0ms            |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 128, 0)                            |
| -        | 2.00±0.1ms                       | 1.65±0.01ms         |    0.82 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 128, 1)                            |
| -        | 8.24±0.2ms                       | 7.22±0.04ms         |    0.88 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 128, 2)                            |
| -        | 11.7±0.4ms                       | 10.3±0.04ms         |    0.88 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 128, 3)                            |
| -        | 352±9μs                          | 285±3μs             |    0.81 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 16, 0)                             |
| -        | 491±20μs                         | 393±2μs             |    0.8  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 16, 1)                             |
| -        | 1.04±0.03ms                      | 863±2μs             |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 16, 2)                             |
| -        | 1.35±0.04ms                      | 1.13±0ms            |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 16, 3)                             |
| -        | 499±20μs                         | 413±3μs             |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 32, 0)                             |
| -        | 722±40μs                         | 575±2μs             |    0.8  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 32, 1)                             |
| -        | 1.86±0.06ms                      | 1.56±0ms            |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 32, 2)                             |
| -        | 2.48±0.07ms                      | 2.11±0.01ms         |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 32, 3)                             |
| -        | 782±40μs                         | 646±2μs             |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 64, 0)                             |
| -        | 1.16±0.08ms                      | 935±4μs             |    0.8  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 64, 1)                             |
| -        | 3.67±0.1ms                       | 3.16±0.01ms         |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 64, 2)                             |
| -        | 5.10±0.2ms                       | 4.40±0.01ms         |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 64, 3)                             |
| -        | 274±4μs                          | 220±1μs             |    0.8  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 8, 0)                              |
| -        | 366±10μs                         | 292±1μs             |    0.8  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 8, 1)                              |
| -        | 646±10μs                         | 537±2μs             |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 8, 2)                              |
| -        | 802±20μs                         | 668±8μs             |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('modular_adder', 8, 3)                              |
| -        | 6.63±0.2ms                       | 6.02±0.01ms         |    0.91 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 16, 1)                                |
| -        | 19.9±0.4ms                       | 18.1±0.06ms         |    0.91 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 16, 2)                                |
| -        | 3.16±0.04ms                      | 2.79±0.03ms         |    0.88 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 8, 2)                                 |
| -        | 3.40±0.05ms                      | 3.03±0.05ms         |    0.89 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('multiplier', 8, 3)                                 |
| -        | 170±2ms                          | 142±0.8ms           |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 128, 0)                                     |
| -        | 295±2ms                          | 247±1ms             |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 128, 1)                                     |
| -        | 2.09±0.07ms                      | 1.85±0.01ms         |    0.88 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 16, 0)                                      |
| -        | 3.72±0.2ms                       | 3.04±0.01ms         |    0.82 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 16, 1)                                      |
| -        | 11.4±0.3ms                       | 9.89±0.05ms         |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 16, 2)                                      |
| -        | 14.9±0.3ms                       | 13.2±0.06ms         |    0.89 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 16, 3)                                      |
| -        | 8.58±0.1ms                       | 7.27±0.03ms         |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 32, 0)                                      |
| -        | 13.8±0.3ms                       | 11.8±0.04ms         |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 32, 1)                                      |
| -        | 61.9±1ms                         | 55.9±0.6ms          |    0.9  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 32, 2)                                      |
| -        | 78.5±0.8ms                       | 71.2±0.7ms          |    0.91 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 32, 3)                                      |
| -        | 37.5±0.08ms                      | 31.2±0.1ms          |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 64, 0)                                      |
| -        | 57.3±0.4ms                       | 50.1±0.1ms          |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 64, 1)                                      |
| -        | 602±20μs                         | 520±3μs             |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 8, 0)                                       |
| -        | 1.12±0.09ms                      | 907±5μs             |    0.81 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 8, 1)                                       |
| -        | 2.40±0.09ms                      | 2.05±0.01ms         |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 8, 2)                                       |
| -        | 3.19±0.1ms                       | 2.82±0ms            |    0.88 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qaoa', 8, 3)                                       |
| -        | 21.0±0.6ms                       | 18.8±0.1ms          |    0.9  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 128, 0)                                      |
| -        | 33.9±1ms                         | 30.4±0.1ms          |    0.9  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 128, 1)                                      |
| -        | 54.3±0.9ms                       | 48.1±0.3ms          |    0.88 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 128, 2)                                      |
| -        | 58.1±1ms                         | 52.4±0.5ms          |    0.9  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 128, 3)                                      |
| -        | 460±20μs                         | 391±1μs             |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 16, 0)                                       |
| -        | 713±50μs                         | 585±5μs             |    0.82 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 16, 1)                                       |
| -        | 2.40±0.08ms                      | 2.09±0.02ms         |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 16, 2)                                       |
| -        | 2.65±0.07ms                      | 2.33±0.01ms         |    0.88 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 16, 3)                                       |
| -        | 1.50±0.07ms                      | 1.29±0.02ms         |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 32, 0)                                       |
| -        | 2.26±0.2ms                       | 1.91±0.02ms         |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 32, 1)                                       |
| -        | 9.18±0.2ms                       | 8.23±0.04ms         |    0.9  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 32, 2)                                       |
| -        | 10.0±0.2ms                       | 9.03±0.04ms         |    0.9  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 32, 3)                                       |
| -        | 5.57±0.3ms                       | 4.79±0.06ms         |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 64, 0)                                       |
| -        | 10.2±0.6ms                       | 8.68±0.06ms         |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 64, 1)                                       |
| -        | 23.8±0.5ms                       | 21.3±0.1ms          |    0.89 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 64, 2)                                       |
| -        | 25.7±0.5ms                       | 23.1±0.1ms          |    0.9  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 64, 3)                                       |
| -        | 206±5μs                          | 167±0.8μs           |    0.81 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 8, 0)                                        |
| -        | 303±10μs                         | 244±2μs             |    0.8  | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 8, 1)                                        |
| -        | 692±20μs                         | 582±2μs             |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 8, 2)                                        |
| -        | 778±20μs                         | 660±7μs             |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('qft', 8, 3)                                        |
| -        | 13.1±0.2ms                       | 11.4±0.03ms         |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 128, 0)                                  |
| -        | 22.9±0.6ms                       | 20.0±0.03ms         |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 128, 1)                                  |
| -        | 41.9±0.9ms                       | 36.5±0.1ms          |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 128, 2)                                  |
| -        | 49.2±0.9ms                       | 43.3±0.06ms         |    0.88 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 128, 3)                                  |
| -        | 1.78±0.06ms                      | 1.56±0ms            |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 16, 0)                                   |
| -        | 3.19±0.2ms                       | 2.64±0.01ms         |    0.83 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 16, 1)                                   |
| -        | 5.60±0.2ms                       | 4.74±0.02ms         |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 16, 2)                                   |
| -        | 6.49±0.2ms                       | 5.57±0.02ms         |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 16, 3)                                   |
| -        | 3.35±0.09ms                      | 2.96±0ms            |    0.88 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 32, 0)                                   |
| -        | 6.00±0.3ms                       | 5.03±0.01ms         |    0.84 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 32, 1)                                   |
| -        | 10.9±0.3ms                       | 9.26±0.01ms         |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 32, 2)                                   |
| -        | 12.5±0.4ms                       | 11.0±0.04ms         |    0.88 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 32, 3)                                   |
| -        | 6.56±0.2ms                       | 5.81±0.02ms         |    0.89 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 64, 0)                                   |
| -        | 11.6±0.6ms                       | 10.1±0.02ms         |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 64, 1)                                   |
| -        | 21.6±0.6ms                       | 18.4±0.04ms         |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 64, 2)                                   |
| -        | 25.2±0.5ms                       | 21.8±0.07ms         |    0.87 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 64, 3)                                   |
| -        | 994±30μs                         | 847±0.5μs           |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 8, 0)                                    |
| -        | 1.73±0.1ms                       | 1.43±0.01ms         |    0.82 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 8, 1)                                    |
| -        | 2.87±0.1ms                       | 2.45±0.01ms         |    0.85 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 8, 2)                                    |
| -        | 3.33±0.1ms                       | 2.87±0.01ms         |    0.86 | transpiler_ft.TranspilerCliffordRZBenchmarks.time_transpile('trotter', 8, 3)                                    |
| -        | 89.9±0.1ms                       | 78.2±0.05ms         |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('grover', 4, 0)                                      |
| -        | 95.6±0.4ms                       | 83.1±0.1ms          |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('grover', 4, 1)                                      |
| -        | 98.4±0.2ms                       | 85.6±0.2ms          |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('grover', 4, 2)                                      |
| -        | 98.2±0.1ms                       | 85.7±0.1ms          |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('grover', 4, 3)                                      |
| -        | 242±0.1ms                        | 211±0.9ms           |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('grover', 8, 0)                                      |
| -        | 140±1μs                          | 102±0.4μs           |    0.73 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 4, 0)                                         |
| -        | 200±2μs                          | 152±2μs             |    0.76 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 4, 1)                                         |
| -        | 314±2μs                          | 255±2μs             |    0.81 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 4, 2)                                         |
| -        | 320±1μs                          | 256±2μs             |    0.8  | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 4, 3)                                         |
| -        | 193±3μs                          | 144±0.2μs           |    0.75 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 8, 0)                                         |
| -        | 301±10μs                         | 228±4μs             |    0.76 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 8, 1)                                         |
| -        | 532±20μs                         | 445±7μs             |    0.84 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 8, 2)                                         |
| -        | 536±20μs                         | 439±4μs             |    0.82 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('mcx', 8, 3)                                         |
| -        | 213±2μs                          | 170±2μs             |    0.79 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 4, 0)                               |
| -        | 289±6μs                          | 236±4μs             |    0.82 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 4, 1)                               |
| -        | 440±6μs                          | 369±2μs             |    0.84 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 4, 2)                               |
| -        | 437±6μs                          | 369±2μs             |    0.84 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 4, 3)                               |
| -        | 258±2μs                          | 208±2μs             |    0.81 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 8, 0)                               |
| -        | 372±20μs                         | 296±5μs             |    0.8  | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 8, 1)                               |
| -        | 607±20μs                         | 511±4μs             |    0.84 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 8, 2)                               |
| -        | 602±20μs                         | 514±4μs             |    0.85 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('modular_adder', 8, 3)                               |
| -        | 20.5±0.03ms                      | 17.8±0.02ms         |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('multiplier', 4, 0)                                  |
| -        | 22.7±0.3ms                       | 19.6±0.04ms         |    0.86 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('multiplier', 4, 1)                                  |
| -        | 24.2±0.2ms                       | 21.0±0.03ms         |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('multiplier', 4, 2)                                  |
| -        | 24.1±0.2ms                       | 21.0±0.06ms         |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('multiplier', 4, 3)                                  |
| -        | 2.15±0.1ms                       | 1.92±0.01ms         |    0.89 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('multiplier', 8, 1)                                  |
| -        | 27.3±20ms                        | 2.63±0ms            |    0.1  | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('multiplier', 8, 2)                                  |
| -        | 27.2±20ms                        | 2.63±0.01ms         |    0.1  | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('multiplier', 8, 3)                                  |
| -        | 41.8±0.03ms                      | 36.2±0.02ms         |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 4, 0)                                         |
| -        | 43.2±0.2ms                       | 37.2±0.07ms         |    0.86 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 4, 1)                                         |
| -        | 43.8±0.09ms                      | 38.1±0.02ms         |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 4, 2)                                         |
| -        | 43.9±0.04ms                      | 38.2±0.02ms         |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 4, 3)                                         |
| -        | 117±0.08ms                       | 101±0.1ms           |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 8, 0)                                         |
| -        | 125±0.1ms                        | 108±0.2ms           |    0.86 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 8, 1)                                         |
| -        | 130±0.08ms                       | 113±0.1ms           |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 8, 2)                                         |
| -        | 129±0.4ms                        | 113±0.08ms          |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('qft', 8, 3)                                         |
| -        | 18.9±0.01ms                      | 16.6±0.03ms         |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 4, 0)                                     |
| -        | 22.4±0.4ms                       | 19.4±0.06ms         |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 4, 1)                                     |
| -        | 23.6±0.1ms                       | 20.8±0.06ms         |    0.88 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 4, 2)                                     |
| -        | 23.6±0.1ms                       | 20.7±0.05ms         |    0.88 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 4, 3)                                     |
| -        | 20.5±0.05ms                      | 18.0±0.04ms         |    0.88 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 8, 0)                                     |
| -        | 27.7±0.6ms                       | 24.2±0.08ms         |    0.87 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 8, 1)                                     |
| -        | 30.7±0.4ms                       | 27.1±0.04ms         |    0.88 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 8, 2)                                     |
| -        | 30.7±0.4ms                       | 27.2±0.04ms         |    0.89 | transpiler_ft.TranspilerCliffordTBenchmarks.time_transpile('trotter', 8, 3)                                     |
| -        | 14.7±0.2ms                       | 12.9±0.05ms         |    0.88 | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_from_large_qasm_backend_with_prop(0)                 |
| -        | 19.3±0.3ms                       | 17.2±0.08ms         |    0.89 | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_from_large_qasm_backend_with_prop(1)                 |
| -        | 4.06±0.1ms                       | 3.64±0.05ms         |    0.9  | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_from_large_qasm_backend_with_prop(2)                 |
| -        | 4.24±0.1ms                       | 3.81±0.04ms         |    0.9  | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_from_large_qasm_backend_with_prop(3)                 |
| -        | 8.81±0.2ms                       | 7.93±0.04ms         |    0.9  | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_qv_14_x_14(1)                                        |
| -        | 16.7±0.3ms                       | 14.8±0.1ms          |    0.89 | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_qv_14_x_14(2)                                        |
| -        | 18.2±0.2ms                       | 16.4±0.1ms          |    0.9  | transpiler_levels.TranspilerLevelBenchmarks.time_transpile_qv_14_x_14(3)                                        |
| -        | 5.56±0.06ms                      | 4.95±0.08ms         |    0.89 | transpiler_qualitative.TranspilerQualitativeBench.time_transpile_time_cnt3_5_179(2)                             |
| -        | 7.60±0.09ms                      | 6.82±0.09ms         |    0.9  | transpiler_qualitative.TranspilerQualitativeBench.time_transpile_time_cnt3_5_179(3)                             |
| -        | 8.27±0.1ms                       | 7.30±0.1ms          |    0.88 | transpiler_qualitative.TranspilerQualitativeBench.time_transpile_time_cnt3_5_180(2)                             |
| -        | 12.9±0.1ms                       | 11.3±0.08ms         |    0.88 | transpiler_qualitative.TranspilerQualitativeBench.time_transpile_time_cnt3_5_180(3)                             |
| -        | 45.1±0.8ms                       | 41.0±0.3ms          |    0.91 | utility_scale.UtilityScaleBenchmarks.time_square_heisenberg('cz')                                               |
| -        | 663±10μs                         | 600±8μs             |    0.9  | vf2.VF2LayoutSuite.time_heavy_hex_line(1081, True, 10, 1000000)                                                 |
| -        | 694±10μs                         | 624±6μs             |    0.9  | vf2.VF2LayoutSuite.time_heavy_hex_line(1081, True, 57, 1000000)                                                 |
| Change   | Before [0d63a936] <mimalloc~1>   | After [0bba0eef]    |   Ratio | Benchmark (Parameter)                                                      |
|----------|----------------------------------|---------------------|---------|----------------------------------------------------------------------------|
| +        | 45.0±1μs                         | 51.5±0.6μs          |    1.14 | circuit_construction.CircuitConstructionBench.time_circuit_extend(1, 2048) |

I'm not really worried that one circuit extend benchmark appears to have had a 6μs slowdown compared to the overwhelmingly consistent speed ups flagged on most other benchmarks. That being said this is just the benchmarks where asv thought the results with significant, I did this for brevity. I can share the full output if people are interested.

Copy link
Copy Markdown
Member

@jakelishman jakelishman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In principle I'm ok with this, but the new requirement to have a C compiler available might cause trouble. At a minimum, we should have a build release note (like the label) and document that in the "building from source" parts of the docs.

I think beyond that, it'd either be nice to either fully commit to the mimalloc feature being configurable in pyext by having setup.py interpret some option (can be envvar) about whether to enable it or not, or to say "no, pyext requires mimalloc" (i.e. get rid of the mimalloc feature and just make it a hard Rust dependency) so we don't have to deal with potentially testing two different allocators.

Fwiw I checked manually, and while cc is already in our lockfile, it's to support building spindle with the loom feature enabled, which we don't (spindle gets pulled in by faer and private-gemm-x86, neither of which turn on loom).

@mtreinish
Copy link
Copy Markdown
Member Author

I didn't write a release note because I wanted to answer that question specifically. I wrote it this way, optional but used by default everywhere, so we could figure out which way we wanted to go. Specifically if we go optional and disabled by default, I'd write the release note as a build system optional feature to opt-in if you have a C compiler and want better performance (likely triggered via an env var). Then update the CI jobs to set that flag where necessary. Likewise if we decide to go the other way and just require it I'd want to do what you propose and just remove the optional flag from the dependency in the Cargo.toml. But I wasn't confident that we wanted to require the c compiler in all builds which is why I stayed in the middle until we made a decision.

@jakelishman jakelishman added the ci: test wheels Run the wheel-build scripts as an additional CI run for this PR label Apr 14, 2026
@jakelishman
Copy link
Copy Markdown
Member

For pyext in particular I'd probably be in favour of just mandating that it's required. We're most confident in the memory-access patterns caused by Python-space usage of Qiskit, and I think the performance improvements are sufficient to justify swapping over. Having a functional C compiler isn't an onerous requirement - there's no funky dependencies to pull in, or anything like that.

I've kicked off the wheels-build run to see if there will be problems on Power or Z, though those don't have to be blockers (but might inform whether we make it optional or not).

I was wondering if we need to / should do anything about mimalloc in the Miri tests, but in practice I imagine Miri probably replaces the global allocator with itself anyway? I'm not 100% clear.

@jakelishman
Copy link
Copy Markdown
Member

and btw, the reason I brought it up specifically was that while the commit message says

If we don't want to make this enabled by default (primarily because of the dependency on a C compiler) for building from source we can update the logic in the build scripts to expose an option and only enable in CI for testing and for release artifacts.

I wanted to specifically discuss not providing the option for it all.

If we end up making it optional because of problems building from source on things like Windows when doing pip install ., I'd probably want to make it opt-in; if it were opt-out, then the less sophisticated users who would struggle due to the lack of a C compiler would be the same users who'll never think to look into documentation on configuration options for building from source.

@mtreinish mtreinish added this to the 2.5.0 milestone Apr 16, 2026
@mtreinish mtreinish moved this from Ready to In review in Qiskit 2.5 Apr 16, 2026
@coveralls
Copy link
Copy Markdown

Coverage Report for CI Build 24520719224

Warning

Build has drifted: This PR's base is out of sync with its target branch, so coverage data may include unrelated changes.
Quick fix: rebase this PR. Learn more →

Coverage decreased (-0.008%) to 87.475%

Details

  • Coverage decreased (-0.008%) from the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • 66 coverage regressions across 6 files.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

66 previously-covered lines in 6 files lost coverage.

File Lines Losing Coverage Coverage
crates/synthesis/src/discrete_basis/solovay_kitaev.rs 24 80.72%
crates/circuit/src/operations.rs 21 82.34%
crates/circuit/src/packed_instruction.rs 11 92.81%
crates/qasm2/src/lex.rs 5 91.77%
crates/transpiler/src/commutation_checker.rs 4 88.34%
crates/circuit/src/instruction.rs 1 89.8%

Coverage Stats

Coverage Status
Relevant Lines: 119553
Covered Lines: 104579
Line Coverage: 87.48%
Coverage Strength: 982559.94 hits per line

💛 - Coveralls

This commit adds a new feature to the cext and pyext crates to switch the
global allocator to use mimalloc [1] instead of the system allocator.
mimalloc promises better allocation performance and also lower resident
set size over glibc, macOS's libmalloc, or window's allocator [2]. In local
benchmarking using mimalloc improves runtime performance on transpiler
bencmarks in asv about 10% on my x86_64 benchmarking system. The
tradeoff for this is the mimalloc crate [3] internally builds and
statically links the mimalloc c library from source as part of cargo's
build process. This is all encapsulated in the mimalloc-sys's build.rs
using the cc [4] crate so it embeds very cleanly into the build system.
However, this does however require that a C compiler is available when
building from source. For building the Python package and ironically the
C standalone lib this was previously not a requirement.

When the feature is enabled it switches the global allocator to use
mimalloc. Since this is global for a compilation artifact we can only
do it once in qiskit crate, and we'll want to do it either in pyext xor
cext based on whether we're building a python extension or c standalone lib
so that only the outermost crate is opinionated about which allocator to
use. By default this feature is disabled on both crates and we opt-in to
it in the build system. For building pyext the setup.py file updates the
features we pass to setuptools-rust when building the extension to enable
the mimalloc crate and set the global allocator in the pyext code.
Similarly, the makefile is updated to do the same for build cext in
standalone mode. If we don't want to make this enabled by default
(primarily because of the dependency on a C compiler) for building from
source we can update the logic in the build scripts to expose an option
and only enable in CI for testing and for release artifacts. This is
something we'll need to discuss before releasing this option.

[1] https://github.com/microsoft/mimalloc
[2] Leijen, D., Zorn, B., de Moura, L. (2019). Mimalloc: Free List
Sharding in Action. In: Lin, A. (eds) Programming Languages and Systems.
APLAS 2019. Lecture Notes in Computer Science(), vol 11893. Springer,
Cham. https://doi.org/10.1007/978-3-030-34175-6_13
[3] https://crates.io/crates/mimalloc
[4] https://docs.rs/cc/latest/cc/
This commit switches the mimalloc feature to be opt-in by default
everywhere. Since building mimalloc requires a C compiler and this does
significantly change the requirements for building Qiskit from source,
making it opt-in for people that want it is the best course of action
for now. This commit adds a new environment variable
`QISKIT_BUILD_WITH_MIMALLOC=1` which is used to enable building mimalloc
when building Qiskit. The CI jobs are updated to mix mimalloc and not in
Python test jobs and also to always enable mimalloc in wheel builds for
release.
Copy link
Copy Markdown
Member

@jakelishman jakelishman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is the right organisation now - we distribute with mimalloc but the build process is opt-in to avoid needing a C compiler by default.

I only had documentation comments.

Comment thread CONTRIBUTING.md Outdated
Comment thread releasenotes/notes/mimalloc-403d3300aa698fae.yaml Outdated
This commti adds the mimalloc environment variable to the asv config too
so that we are enabling the use of mimalloc when running asv numbers.
This will mean the performance numbers we measure with asv are showing
the performance with mimalloc. This is desired as it will better capture
the performance of the packages we ship on release.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Changelog: Build Add a "Build System" entry in the GitHub Release changelog. ci: test wheels Run the wheel-build scripts as an additional CI run for this PR performance Rust This PR or issue is related to Rust code in the repository

Projects

Status: In review

Development

Successfully merging this pull request may close these issues.

4 participants