Skip to content

Benchmarks and analysis

QSimulator.jl

Maintained by BBN-Q

Package for simulating time dynamics of quantum systems with a focus on superconducting qubits.

JuliaApache-2.0
QSimulator.jl illustration

Resource snapshot

Category

Benchmarks and analysis

Stars

28

Last pushed

May 19, 2022Updated 4y ago

Open issues

3

Quickstart

Get running in a few lines.

Quickstart
julia> import QSimulator

julia> using PkgBenchmark

julia> results = benchmarkpkg("QSimulator")
PkgBenchmark: Running benchmarks...
PkgBenchmark: using benchmark tuning data in /home/cryan/repos/QSimulator.jl/benchmark/tune.json
Benchmarking:  54%|███████████████████████████████████████████████████████████████▎                                                      |  ETA: 0:01:00
    [2/2]:        "unitary"
      [1/2]:      "propagator"
        [1/4]:    "lab frame parametric 2Q gate"
          [2/2]:  "2 transmons"
          ⋮

julia> export_markdown(stdout, results)
# Benchmark Report for *.*

## Job Properties
* Time of benchmark: 3 Sep 2019 - 22:11
* Package commit: dirty
* Julia commit: c6da87
* Julia command flags: None
* Environment variables: None

## Results
Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the `ID` column have the structure `[parent_group, child_group, ..., key]`, and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

| ID                                                | time            | GC time    | memory          | allocations |
|---------------------------------------------------|----------------:|-----------:|----------------:|------------:|
| `["operators", "X(q) (2 levels)"]`                |  97.304 ns (5%) |            |  272 bytes (1%) |           4 |
| `["operators", "X(q) (3 levels)"]`                | 102.005 ns (5%) |            |  320 bytes (1%) |           4 |
| `["operators", "X(q) (4 levels)"]`                | 108.733 ns (5%) |            |  384 bytes (1%) |           4 |
| `["operators", "X(q) (5 levels)"]`                | 113.097 ns (5%) |            |  464 bytes (1%) |           4 |
| `["operators", "X(q, 0.123) (2 levels)"]`         |  95.520 ns (5%) |            |  272 bytes (1%) |           4 |
| `["operators", "X(q, 0.123) (3 levels)"]`         | 101.485 ns (5%) |            |  320 bytes (1%) |           4 |
| `["operators", "X(q, 0.123) (4 levels)"]`         | 105.386 ns (5%) |            |  384 bytes (1%) |           4 |
| `["operators", "X(q, 0.123) (5 levels)"]`         | 116.289 ns (5%) |            |  464 bytes (1%) |           4 |
| `["operators", "lowering(q) (2 levels)"]`         |  77.935 ns (5%) |            |  240 bytes (1%) |           3 |
| `["operators", "lowering(q) (3 levels)"]`         |  80.843 ns (5%) |            |  288 bytes (1%) |           3 |
⋮

What it is

QSimulator.jl is maintained by BBN-Q and sits in the Benchmarks and analysis lane of the open-source quantum map.

Package for simulating time dynamics of quantum systems with a focus on superconducting qubits.

Last verified by Qtangl generator on May 27, 2026

Who it's for

Researchers and evaluators comparing toolchains, algorithms, hardware assumptions, or performance tradeoffs.

What you can build or learn

  • Learn what this project measures and why it matters.
  • Compare benchmarking assumptions instead of taking headline claims at face value.
  • Use the resource to evaluate ecosystems more critically.

License

Apache-2.0

SPDX identifier detected from the repository metadata or license files.

Repository README

Preview from the project README.

Rendered as Markdown inside a scrollable preview. Long READMEs stay contained; expand or open on GitHub for the full document.

~439 words · about 2 min readOpen on GitHub

QSimulator.jl

CI

Package for simulating time dynamics of quantum systems with a focus on superconducting qubits.

Installation

(v1.2) pkg> add https://github.com/BBN-Q/QSimulator.jl

Unit tests

Pkg.test("QSimulator")

Benchmarks

We can track the code performance between commits by running the benchmarking suite in benchmark/benchmarks.jl using PkgBenchmark.

julia> import QSimulator

julia> using PkgBenchmark

julia> results = benchmarkpkg("QSimulator")
PkgBenchmark: Running benchmarks...
PkgBenchmark: using benchmark tuning data in /home/cryan/repos/QSimulator.jl/benchmark/tune.json
Benchmarking:  54%|███████████████████████████████████████████████████████████████▎                                                      |  ETA: 0:01:00
    [2/2]:        "unitary"
      [1/2]:      "propagator"
        [1/4]:    "lab frame parametric 2Q gate"
          [2/2]:  "2 transmons"
          ⋮

julia> export_markdown(stdout, results)
# Benchmark Report for *.*

## Job Properties
* Time of benchmark: 3 Sep 2019 - 22:11
* Package commit: dirty
* Julia commit: c6da87
* Julia command flags: None
* Environment variables: None

## Results
Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the `ID` column have the structure `[parent_group, child_group, ..., key]`, and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

| ID                                                | time            | GC time    | memory          | allocations |
|---------------------------------------------------|----------------:|-----------:|----------------:|------------:|
| `["operators", "X(q) (2 levels)"]`                |  97.304 ns (5%) |            |  272 bytes (1%) |           4 |
| `["operators", "X(q) (3 levels)"]`                | 102.005 ns (5%) |            |  320 bytes (1%) |           4 |
| `["operators", "X(q) (4 levels)"]`                | 108.733 ns (5%) |            |  384 bytes (1%) |           4 |
| `["operators", "X(q) (5 levels)"]`                | 113.097 ns (5%) |            |  464 bytes (1%) |           4 |
| `["operators", "X(q, 0.123) (2 levels)"]`         |  95.520 ns (5%) |            |  272 bytes (1%) |           4 |
| `["operators", "X(q, 0.123) (3 levels)"]`         | 101.485 ns (5%) |            |  320 bytes (1%) |           4 |
| `["operators", "X(q, 0.123) (4 levels)"]`         | 105.386 ns (5%) |            |  384 bytes (1%) |           4 |
| `["operators", "X(q, 0.123) (5 levels)"]`         | 116.289 ns (5%) |            |  464 bytes (1%) |           4 |
| `["operators", "lowering(q) (2 levels)"]`         |  77.935 ns (5%) |            |  240 bytes (1%) |           3 |
| `["operators", "lowering(q) (3 levels)"]`         |  80.843 ns (5%) |            |  288 bytes (1%) |           3 |
⋮

Comparing benchmarks

To track performance regressions or improvements run the benchmark suite as above on the two different branches.

julia> using Statistics: median

julia> judgement = judge("QSimulator", "faster-branch", "master"; f=median)

julia> export_markdown(stdout, judgement)
⋮
Read on GitHub

Activity

Latest release

—

Watchers

10

Python support

—

Learn digest

Get monthly updates when library entries change.

Monthly digest: new library entries, updated flagships, and one editorial pick.

Related resources

Keep exploring nearby tools.

quantumlib

Cirq

Python framework for creating, editing, and running Noisy Intermediate-Scale Quantum (NISQ) circuits.

PythonApache-2.0Flagship

4,971 stars · Updated 3mo ago

open-quantum-safe

liboqs

C library for prototyping and experimenting with quantum-resistant cryptography

CMITFlagship

2,946 stars · Updated 3mo ago

cda-tum

mqt-bench

MQT Bench - An MQT Tool for Benchmarking Quantum Software Tools

PythonMIT

118 stars · Updated 3mo ago

XanaduAI

pennylane

PennyLane is an open-source quantum software platform for quantum computing, quantum machine learning, and quantum chemistry.

PythonApache-2.0FlagshipQtangl relevant

3,229 stars · Updated 3mo ago

QISKit

qiskit

Qiskit is an open-source SDK for working with quantum computers at the level of extended quantum circuits, operators, and primitives.

PythonApache-2.0FlagshipQtangl relevant

7,412 stars · Updated 3mo ago

Microsoft

QuantumKatas

Tutorials and programming exercises for learning Q# and quantum computing

Jupyter NotebookMITFlagshipArchive

4,862 stars · Updated 2y ago