QuantLib is an open-source C++ library for quantitative finance. It provides tools for pricing, modeling, trading, and risk management, and is widely used as both a development library and a representative financial computing workload.
Because QuantLib is a substantial C++ codebase with realistic compute behavior, it’s also useful as a benchmark when evaluating cloud systems and processor architectures. In this Learning Path, you’ll build QuantLib from source and run its benchmark executable on an Arm-based Azure Cobalt virtual machine.
Azure Cobalt provides Arm64 virtual machines for cloud-native development and performance evaluation. Running QuantLib on Azure Cobalt gives you a practical way to measure how a real C++ finance workload behaves on Arm-based cloud infrastructure.
You’ll use:
The steps follow a practical benchmark flow:
The steps in this Learning Path aren’t a general introduction to quantitative finance or QuantLib development.
The benchmark executable runs approximately 85 tests drawn directly from QuantLib’s own test suite, covering five domains:
Each test has a fixed iteration count built in. Some run once per task, and others run hundreds or thousands of times to produce a measurable signal. The --size argument multiplies the entire set: --size=2 runs each test twice, --size=5 runs it five times, and so on. Doubling --size doubles runtime while leaving throughput unchanged — this is the expected weak scaling behavior of the benchmark.
The --nProc argument controls the number of worker processes. Because QuantLib is not thread-safe, the benchmark uses separate processes rather than threads, coordinated through Boost IPC. Before timing begins, the benchmark runs every test once through the Boost unit test framework to verify correctness. The tests produce the *** No errors detected line in the output.
System Throughput is calculated as (size × number_of_tests) / total_runtime and is the primary metric for comparing runs across thread counts and system configurations.
When benchmarking a workload such as QuantLib, the goal is not just to obtain one runtime number. You want a repeatable process that lets you compare runs across system sizes, thread counts, software versions, and compiler settings.
For that reason, this Learning Path emphasizes:
You’ve now learned about QuantLib and why you’ll be using Azure Cobalt in this Learning Path. You’ve also learned how the benchmark works and the intent behind benchmarking a workload such as QuantLib.
Next, you’ll set up your Azure Cobalt environment.