OQS algorithm performance visualizations

These pages visualize measurements taken by the OQS speed project.

  1. KEM algorithms runtime (liboqs speed_kem)
  2. SIG algorithms runtime (liboqs speed_sig)
  3. KEM algorithms memory use (liboqs test_kem_mem)
  4. SIG algorithms memory use (liboqs test_sig_mem)
  5. KEM/SIG OpenSSL performance (openssl speed)
  6. TLS handshakes performance (openssl s_time)

Measurements for x86_64 and aarch64 architectures have been taken on AWS instances. Algorithms labelled -ref are reference (C-code only) implementations compiled without special CPU feature support. Algorithms labelled -noport are optimized implementations, possibly containing assembly code that can run only on the specific machine and CPU feature sets requested (skylake). Algorithms without any extension label are compiled to achieve best performance figures on the widest possible set of machines: The code relies on CPU feature set detection and is therefore portable; some algorithms not supporting dynamic feature set detection may run slower though.

Measurements for Apple M1 architecture have been taken on a dedicated laptop. As that architecture does not have CPU-specific features (yet) that may or may not be present in a given runtime CPU, the figures for -ref and -noport are identical to the unlabelled, distributable performance measurements as only a single performance test with all CPU features supported by M1 are taken.

These graphs will be extended over time to other CPU types and cloud infrastructures.