diff --git a/.github/scripts/run_benchmarks.sh b/.github/scripts/run_benchmarks.sh index 659fea49..513f2dea 100755 --- a/.github/scripts/run_benchmarks.sh +++ b/.github/scripts/run_benchmarks.sh @@ -12,6 +12,11 @@ # needed. The drivers always exit non-zero (the Jamfile declares them run-fail), # so success is judged on the data set actually being written. # +# --sources names extra translation units to build alongside the driver, which is +# how the platforms with no packaged Abseil get one: point --cxxflags at a source +# checkout and --sources at absl/numeric/int128.cc, the only file of it that +# absl::uint128 and absl::int128 need. +# # .github/scripts/run_benchmarks.sh --compiler g++-14 --out /tmp/results # .github/scripts/run_benchmarks.sh --msvc --elements 5000000 --out C:/results @@ -20,6 +25,7 @@ set -e COMPILER="" EXTRA_CXXFLAGS="" EXTRA_LDFLAGS="" +EXTRA_SOURCES="" ELEMENTS=20000000 REPETITIONS=5 OUT="" @@ -30,6 +36,7 @@ while [ $# -gt 0 ]; do --compiler) COMPILER="$2"; shift 2 ;; --cxxflags) EXTRA_CXXFLAGS="$2"; shift 2 ;; --ldflags) EXTRA_LDFLAGS="$2"; shift 2 ;; + --sources) EXTRA_SOURCES="$2"; shift 2 ;; --elements) ELEMENTS="$2"; shift 2 ;; --repetitions) REPETITIONS="$2"; shift 2 ;; --out) OUT="$2"; shift 2 ;; @@ -67,12 +74,14 @@ for sign in u128 i128; do # the widest vectors need. executable="./benchmark_$sign.exe" # shellcheck disable=SC2086 - cl -nologo -std:c++20 -O2 -EHsc -DNDEBUG $INCLUDES "$source_file" \ - -Fe:"benchmark_$sign.exe" -link -LARGEADDRESSAWARE + cl -nologo -std:c++20 -O2 -EHsc -DNDEBUG $EXTRA_CXXFLAGS $INCLUDES \ + "$source_file" $EXTRA_SOURCES \ + -Fe:"benchmark_$sign.exe" -link -LARGEADDRESSAWARE $EXTRA_LDFLAGS else executable="./benchmark_$sign" # shellcheck disable=SC2086 - $COMPILER -std=c++20 -O2 -DNDEBUG $EXTRA_CXXFLAGS $INCLUDES "$source_file" \ + $COMPILER -std=c++20 -O2 -DNDEBUG $EXTRA_CXXFLAGS $INCLUDES \ + "$source_file" $EXTRA_SOURCES \ -o "benchmark_$sign" $EXTRA_LDFLAGS fi diff --git a/.github/workflows/benchmarks.yml b/.github/workflows/benchmarks.yml index 5a448f0c..b6fdfd70 100644 --- a/.github/workflows/benchmarks.yml +++ b/.github/workflows/benchmarks.yml @@ -20,6 +20,13 @@ # 128-bit vectors of the default length do not fit in a 32-bit address space. The # element count lands in the data set and is printed in the documentation, so the # tables stay honest about what was measured. +# +# Linux and macOS take Abseil from a package. Windows has none, so those jobs +# check out the pinned Abseil release and build the single translation unit that +# absl::uint128 and absl::int128 need, with the same flags as the rest of the +# benchmark. Building all of Abseil to link one object would cost more CI time +# than the benchmarks themselves, and compiling it here is what keeps the +# comparison fair: both sides of every row come out of one -O2 build. # # Every pull request gets a full set of runs: the step summary of each job @@ -65,6 +72,9 @@ env: ELEMENTS: ${{ inputs.elements || '20000000' }} EMULATED_ELEMENTS: ${{ inputs.emulated_elements || '2000000' }} REPETITIONS: ${{ inputs.repetitions || '5' }} + # The Abseil release the Windows jobs build against, latest LTS at the time of + # writing. Linux and macOS take whatever their package manager ships. + ABSEIL_TAG: '20260526.0' jobs: linux: @@ -189,6 +199,11 @@ jobs: elements: '' steps: - uses: actions/checkout@v6 + # Cloned next to the Boost tree that the following step creates, so that the + # build reaches both of them by relative path and nothing has to be + # translated between git-bash and cl. + - name: Fetch Abseil + run: git clone --depth 1 --branch "$ABSEIL_TAG" https://github.com/abseil/abseil-cpp.git ../abseil-cpp - name: Setup Boost run: .github/scripts/setup_benchmarks.sh - uses: TheMrMilchmann/setup-msvc-dev@v4 @@ -201,6 +216,8 @@ jobs: : "${COUNT:=$ELEMENTS}" "$GITHUB_WORKSPACE/.github/scripts/run_benchmarks.sh" \ --msvc \ + --cxxflags '-I../abseil-cpp' \ + --sources '../abseil-cpp/absl/numeric/int128.cc' \ --elements "$COUNT" \ --repetitions "$REPETITIONS" \ --out "$GITHUB_WORKSPACE/bench-results" diff --git a/doc/modules/ROOT/data/benchmarks-windows-arm64/i128.json b/doc/modules/ROOT/data/benchmarks-windows-arm64/i128.json index ab57c75b..219cdc6a 100644 --- a/doc/modules/ROOT/data/benchmarks-windows-arm64/i128.json +++ b/doc/modules/ROOT/data/benchmarks-windows-arm64/i128.json @@ -9,199 +9,263 @@ "elements": 20000000, "repetitions": 5, "baseline": "std::_Signed128", - "implementations": ["std::_Signed128", "int128", "boost::mp::int128"], + "implementations": ["std::_Signed128", "int128", "boost::mp::int128", "absl::int128"], "results": [ - {"group": "two_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 100222}, - {"group": "two_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 108474}, - {"group": "two_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 105300}, - {"group": "two_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 118380}, - {"group": "two_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 116926}, - {"group": "two_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 120792}, - {"group": "two_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 670574}, - {"group": "two_word", "operation": "eq", "implementation": "int128", "microseconds": 97530}, - {"group": "two_word", "operation": "ne", "implementation": "int128", "microseconds": 103068}, - {"group": "two_word", "operation": "lt", "implementation": "int128", "microseconds": 104838}, - {"group": "two_word", "operation": "le", "implementation": "int128", "microseconds": 108207}, - {"group": "two_word", "operation": "gt", "implementation": "int128", "microseconds": 113598}, - {"group": "two_word", "operation": "ge", "implementation": "int128", "microseconds": 114446}, - {"group": "two_word", "operation": "comparisons", "implementation": "int128", "microseconds": 642081}, - {"group": "two_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 207652}, - {"group": "two_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 262103}, - {"group": "two_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 489455}, - {"group": "two_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 493449}, - {"group": "two_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 490611}, - {"group": "two_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 477418}, - {"group": "two_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 2421071}, - {"group": "two_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 87229}, - {"group": "two_word", "operation": "add", "implementation": "int128", "microseconds": 88643}, - {"group": "two_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1318976}, - {"group": "two_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 85935}, - {"group": "two_word", "operation": "sub", "implementation": "int128", "microseconds": 86270}, - {"group": "two_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1674347}, - {"group": "two_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 506067}, - {"group": "two_word", "operation": "mul", "implementation": "int128", "microseconds": 82019}, - {"group": "two_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 2455795}, - {"group": "two_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 1026881}, - {"group": "two_word", "operation": "div", "implementation": "int128", "microseconds": 1307573}, - {"group": "two_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 2551063}, - {"group": "two_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 1286303}, - {"group": "two_word", "operation": "mod", "implementation": "int128", "microseconds": 1446105}, - {"group": "two_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 2792552}, - {"group": "two_word", "operation": "div64", "implementation": "std::_Signed128", "microseconds": 2761992}, - {"group": "two_word", "operation": "div64", "implementation": "int128", "microseconds": 1577765}, - {"group": "two_word", "operation": "div64", "implementation": "boost::mp::int128", "microseconds": 8520176}, - {"group": "two_word", "operation": "div32", "implementation": "std::_Signed128", "microseconds": 1131440}, - {"group": "two_word", "operation": "div32", "implementation": "int128", "microseconds": 1183154}, - {"group": "two_word", "operation": "div32", "implementation": "boost::mp::int128", "microseconds": 3675370}, - {"group": "one_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 97330}, - {"group": "one_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 98554}, - {"group": "one_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 136462}, - {"group": "one_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 147098}, - {"group": "one_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 144510}, - {"group": "one_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 148576}, - {"group": "one_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 772965}, - {"group": "one_word", "operation": "eq", "implementation": "int128", "microseconds": 92953}, - {"group": "one_word", "operation": "ne", "implementation": "int128", "microseconds": 104822}, - {"group": "one_word", "operation": "lt", "implementation": "int128", "microseconds": 135547}, - {"group": "one_word", "operation": "le", "implementation": "int128", "microseconds": 130967}, - {"group": "one_word", "operation": "gt", "implementation": "int128", "microseconds": 135904}, - {"group": "one_word", "operation": "ge", "implementation": "int128", "microseconds": 136383}, - {"group": "one_word", "operation": "comparisons", "implementation": "int128", "microseconds": 736968}, - {"group": "one_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 209855}, - {"group": "one_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 257388}, - {"group": "one_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 491415}, - {"group": "one_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 493472}, - {"group": "one_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 489518}, - {"group": "one_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 476588}, - {"group": "one_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 2418595}, - {"group": "one_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 86251}, - {"group": "one_word", "operation": "add", "implementation": "int128", "microseconds": 86666}, - {"group": "one_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1345155}, - {"group": "one_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 86212}, - {"group": "one_word", "operation": "sub", "implementation": "int128", "microseconds": 86134}, - {"group": "one_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1404998}, - {"group": "one_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 505621}, - {"group": "one_word", "operation": "mul", "implementation": "int128", "microseconds": 81402}, - {"group": "one_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 1905949}, - {"group": "one_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 462091}, - {"group": "one_word", "operation": "div", "implementation": "int128", "microseconds": 838271}, - {"group": "one_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 1434688}, - {"group": "one_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 744522}, - {"group": "one_word", "operation": "mod", "implementation": "int128", "microseconds": 880466}, - {"group": "one_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 1513323}, - {"group": "two_one_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 102044}, - {"group": "two_one_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 100393}, - {"group": "two_one_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 98887}, - {"group": "two_one_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 118567}, - {"group": "two_one_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 119721}, - {"group": "two_one_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 119709}, - {"group": "two_one_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 659718}, - {"group": "two_one_word", "operation": "eq", "implementation": "int128", "microseconds": 92176}, - {"group": "two_one_word", "operation": "ne", "implementation": "int128", "microseconds": 97987}, - {"group": "two_one_word", "operation": "lt", "implementation": "int128", "microseconds": 108773}, - {"group": "two_one_word", "operation": "le", "implementation": "int128", "microseconds": 112245}, - {"group": "two_one_word", "operation": "gt", "implementation": "int128", "microseconds": 113307}, - {"group": "two_one_word", "operation": "ge", "implementation": "int128", "microseconds": 109162}, - {"group": "two_one_word", "operation": "comparisons", "implementation": "int128", "microseconds": 633970}, - {"group": "two_one_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 176063}, - {"group": "two_one_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 196559}, - {"group": "two_one_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 247440}, - {"group": "two_one_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 246920}, - {"group": "two_one_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 244052}, - {"group": "two_one_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 241320}, - {"group": "two_one_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 1352750}, - {"group": "two_one_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 89432}, - {"group": "two_one_word", "operation": "add", "implementation": "int128", "microseconds": 84833}, - {"group": "two_one_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1472602}, - {"group": "two_one_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 88620}, - {"group": "two_one_word", "operation": "sub", "implementation": "int128", "microseconds": 85499}, - {"group": "two_one_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1516699}, - {"group": "two_one_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 506083}, - {"group": "two_one_word", "operation": "mul", "implementation": "int128", "microseconds": 80945}, - {"group": "two_one_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 2167853}, - {"group": "two_one_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 1768555}, - {"group": "two_one_word", "operation": "div", "implementation": "int128", "microseconds": 1531715}, - {"group": "two_one_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 4677254}, - {"group": "two_one_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 2184443}, - {"group": "two_one_word", "operation": "mod", "implementation": "int128", "microseconds": 1509547}, - {"group": "two_one_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 4432211}, - {"group": "one_two_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 100596}, - {"group": "one_two_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 104724}, - {"group": "one_two_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 99626}, - {"group": "one_two_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 117748}, - {"group": "one_two_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 118222}, - {"group": "one_two_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 121375}, - {"group": "one_two_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 662639}, - {"group": "one_two_word", "operation": "eq", "implementation": "int128", "microseconds": 96091}, - {"group": "one_two_word", "operation": "ne", "implementation": "int128", "microseconds": 98817}, - {"group": "one_two_word", "operation": "lt", "implementation": "int128", "microseconds": 104346}, - {"group": "one_two_word", "operation": "le", "implementation": "int128", "microseconds": 113204}, - {"group": "one_two_word", "operation": "gt", "implementation": "int128", "microseconds": 113908}, - {"group": "one_two_word", "operation": "ge", "implementation": "int128", "microseconds": 111725}, - {"group": "one_two_word", "operation": "comparisons", "implementation": "int128", "microseconds": 638399}, - {"group": "one_two_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 175174}, - {"group": "one_two_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 192445}, - {"group": "one_two_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 248600}, - {"group": "one_two_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 248641}, - {"group": "one_two_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 244903}, - {"group": "one_two_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 245032}, - {"group": "one_two_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 1355159}, - {"group": "one_two_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 89500}, - {"group": "one_two_word", "operation": "add", "implementation": "int128", "microseconds": 84797}, - {"group": "one_two_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1471006}, - {"group": "one_two_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 85844}, - {"group": "one_two_word", "operation": "sub", "implementation": "int128", "microseconds": 85481}, - {"group": "one_two_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1515757}, - {"group": "one_two_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 506811}, - {"group": "one_two_word", "operation": "mul", "implementation": "int128", "microseconds": 80841}, - {"group": "one_two_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 2190521}, - {"group": "one_two_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 1767688}, - {"group": "one_two_word", "operation": "div", "implementation": "int128", "microseconds": 1530445}, - {"group": "one_two_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 4678695}, - {"group": "one_two_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 2182962}, - {"group": "one_two_word", "operation": "mod", "implementation": "int128", "microseconds": 1511529}, - {"group": "one_two_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 4431483}, - {"group": "random_width", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 99541}, - {"group": "random_width", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 101111}, - {"group": "random_width", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 257069}, - {"group": "random_width", "operation": "le", "implementation": "std::_Signed128", "microseconds": 241744}, - {"group": "random_width", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 247939}, - {"group": "random_width", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 243754}, - {"group": "random_width", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 1191566}, - {"group": "random_width", "operation": "eq", "implementation": "int128", "microseconds": 92235}, - {"group": "random_width", "operation": "ne", "implementation": "int128", "microseconds": 99200}, - {"group": "random_width", "operation": "lt", "implementation": "int128", "microseconds": 226153}, - {"group": "random_width", "operation": "le", "implementation": "int128", "microseconds": 257049}, - {"group": "random_width", "operation": "gt", "implementation": "int128", "microseconds": 224185}, - {"group": "random_width", "operation": "ge", "implementation": "int128", "microseconds": 226041}, - {"group": "random_width", "operation": "comparisons", "implementation": "int128", "microseconds": 1125261}, - {"group": "random_width", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 391406}, - {"group": "random_width", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 395930}, - {"group": "random_width", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 517486}, - {"group": "random_width", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 522564}, - {"group": "random_width", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 523292}, - {"group": "random_width", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 520699}, - {"group": "random_width", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 2871780}, - {"group": "random_width", "operation": "add", "implementation": "std::_Signed128", "microseconds": 86160}, - {"group": "random_width", "operation": "add", "implementation": "int128", "microseconds": 84055}, - {"group": "random_width", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1598093}, - {"group": "random_width", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 88263}, - {"group": "random_width", "operation": "sub", "implementation": "int128", "microseconds": 87934}, - {"group": "random_width", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1769736}, - {"group": "random_width", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 505934}, - {"group": "random_width", "operation": "mul", "implementation": "int128", "microseconds": 81566}, - {"group": "random_width", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 2395038}, - {"group": "random_width", "operation": "div", "implementation": "std::_Signed128", "microseconds": 1506403}, - {"group": "random_width", "operation": "div", "implementation": "int128", "microseconds": 1480602}, - {"group": "random_width", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 3622476}, - {"group": "random_width", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 1722778}, - {"group": "random_width", "operation": "mod", "implementation": "int128", "microseconds": 1447734}, - {"group": "random_width", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 3555076}, - {"group": "random_width", "operation": "shl", "implementation": "std::_Signed128", "microseconds": 321391}, - {"group": "random_width", "operation": "shl", "implementation": "int128", "microseconds": 295187}, - {"group": "random_width", "operation": "shl", "implementation": "boost::mp::int128", "microseconds": 1744143}, - {"group": "random_width", "operation": "shr", "implementation": "std::_Signed128", "microseconds": 314415}, - {"group": "random_width", "operation": "shr", "implementation": "int128", "microseconds": 303113}, - {"group": "random_width", "operation": "shr", "implementation": "boost::mp::int128", "microseconds": 1180367} + {"group": "two_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 93482}, + {"group": "two_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 98081}, + {"group": "two_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 97265}, + {"group": "two_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 116535}, + {"group": "two_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 126807}, + {"group": "two_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 113690}, + {"group": "two_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 646388}, + {"group": "two_word", "operation": "eq", "implementation": "int128", "microseconds": 89593}, + {"group": "two_word", "operation": "ne", "implementation": "int128", "microseconds": 93422}, + {"group": "two_word", "operation": "lt", "implementation": "int128", "microseconds": 103484}, + {"group": "two_word", "operation": "le", "implementation": "int128", "microseconds": 105553}, + {"group": "two_word", "operation": "gt", "implementation": "int128", "microseconds": 104007}, + {"group": "two_word", "operation": "ge", "implementation": "int128", "microseconds": 102743}, + {"group": "two_word", "operation": "comparisons", "implementation": "int128", "microseconds": 599171}, + {"group": "two_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 278720}, + {"group": "two_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 291857}, + {"group": "two_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 500041}, + {"group": "two_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 475814}, + {"group": "two_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 476264}, + {"group": "two_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 509055}, + {"group": "two_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 2532169}, + {"group": "two_word", "operation": "eq", "implementation": "absl::int128", "microseconds": 94255}, + {"group": "two_word", "operation": "ne", "implementation": "absl::int128", "microseconds": 103441}, + {"group": "two_word", "operation": "lt", "implementation": "absl::int128", "microseconds": 102598}, + {"group": "two_word", "operation": "le", "implementation": "absl::int128", "microseconds": 101558}, + {"group": "two_word", "operation": "gt", "implementation": "absl::int128", "microseconds": 115554}, + {"group": "two_word", "operation": "ge", "implementation": "absl::int128", "microseconds": 105371}, + {"group": "two_word", "operation": "comparisons", "implementation": "absl::int128", "microseconds": 623229}, + {"group": "two_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 87690}, + {"group": "two_word", "operation": "add", "implementation": "int128", "microseconds": 86292}, + {"group": "two_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1340347}, + {"group": "two_word", "operation": "add", "implementation": "absl::int128", "microseconds": 87993}, + {"group": "two_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 88120}, + {"group": "two_word", "operation": "sub", "implementation": "int128", "microseconds": 87746}, + {"group": "two_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1662484}, + {"group": "two_word", "operation": "sub", "implementation": "absl::int128", "microseconds": 86936}, + {"group": "two_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 655167}, + {"group": "two_word", "operation": "mul", "implementation": "int128", "microseconds": 99366}, + {"group": "two_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 2453234}, + {"group": "two_word", "operation": "mul", "implementation": "absl::int128", "microseconds": 127666}, + {"group": "two_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 1059789}, + {"group": "two_word", "operation": "div", "implementation": "int128", "microseconds": 1308653}, + {"group": "two_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 2668453}, + {"group": "two_word", "operation": "div", "implementation": "absl::int128", "microseconds": 1687354}, + {"group": "two_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 1282436}, + {"group": "two_word", "operation": "mod", "implementation": "int128", "microseconds": 1437940}, + {"group": "two_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 2812552}, + {"group": "two_word", "operation": "mod", "implementation": "absl::int128", "microseconds": 1679646}, + {"group": "two_word", "operation": "div64", "implementation": "std::_Signed128", "microseconds": 2767939}, + {"group": "two_word", "operation": "div64", "implementation": "int128", "microseconds": 1576683}, + {"group": "two_word", "operation": "div64", "implementation": "boost::mp::int128", "microseconds": 8575189}, + {"group": "two_word", "operation": "div64", "implementation": "absl::int128", "microseconds": 38250417}, + {"group": "two_word", "operation": "div32", "implementation": "std::_Signed128", "microseconds": 1132739}, + {"group": "two_word", "operation": "div32", "implementation": "int128", "microseconds": 1184937}, + {"group": "two_word", "operation": "div32", "implementation": "boost::mp::int128", "microseconds": 3573634}, + {"group": "two_word", "operation": "div32", "implementation": "absl::int128", "microseconds": 53147713}, + {"group": "one_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 93271}, + {"group": "one_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 101724}, + {"group": "one_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 130436}, + {"group": "one_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 139760}, + {"group": "one_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 138670}, + {"group": "one_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 142881}, + {"group": "one_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 747075}, + {"group": "one_word", "operation": "eq", "implementation": "int128", "microseconds": 94336}, + {"group": "one_word", "operation": "ne", "implementation": "int128", "microseconds": 95758}, + {"group": "one_word", "operation": "lt", "implementation": "int128", "microseconds": 129888}, + {"group": "one_word", "operation": "le", "implementation": "int128", "microseconds": 130037}, + {"group": "one_word", "operation": "gt", "implementation": "int128", "microseconds": 132709}, + {"group": "one_word", "operation": "ge", "implementation": "int128", "microseconds": 129395}, + {"group": "one_word", "operation": "comparisons", "implementation": "int128", "microseconds": 712487}, + {"group": "one_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 274000}, + {"group": "one_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 295787}, + {"group": "one_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 497972}, + {"group": "one_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 478828}, + {"group": "one_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 477099}, + {"group": "one_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 509114}, + {"group": "one_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 2533255}, + {"group": "one_word", "operation": "eq", "implementation": "absl::int128", "microseconds": 94721}, + {"group": "one_word", "operation": "ne", "implementation": "absl::int128", "microseconds": 101835}, + {"group": "one_word", "operation": "lt", "implementation": "absl::int128", "microseconds": 128924}, + {"group": "one_word", "operation": "le", "implementation": "absl::int128", "microseconds": 130448}, + {"group": "one_word", "operation": "gt", "implementation": "absl::int128", "microseconds": 138264}, + {"group": "one_word", "operation": "ge", "implementation": "absl::int128", "microseconds": 133944}, + {"group": "one_word", "operation": "comparisons", "implementation": "absl::int128", "microseconds": 728529}, + {"group": "one_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 88819}, + {"group": "one_word", "operation": "add", "implementation": "int128", "microseconds": 84701}, + {"group": "one_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1357218}, + {"group": "one_word", "operation": "add", "implementation": "absl::int128", "microseconds": 89796}, + {"group": "one_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 95426}, + {"group": "one_word", "operation": "sub", "implementation": "int128", "microseconds": 88198}, + {"group": "one_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1402704}, + {"group": "one_word", "operation": "sub", "implementation": "absl::int128", "microseconds": 88003}, + {"group": "one_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 535680}, + {"group": "one_word", "operation": "mul", "implementation": "int128", "microseconds": 83671}, + {"group": "one_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 1885991}, + {"group": "one_word", "operation": "mul", "implementation": "absl::int128", "microseconds": 130770}, + {"group": "one_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 457338}, + {"group": "one_word", "operation": "div", "implementation": "int128", "microseconds": 846436}, + {"group": "one_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 1446845}, + {"group": "one_word", "operation": "div", "implementation": "absl::int128", "microseconds": 1618345}, + {"group": "one_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 744203}, + {"group": "one_word", "operation": "mod", "implementation": "int128", "microseconds": 872822}, + {"group": "one_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 1433754}, + {"group": "one_word", "operation": "mod", "implementation": "absl::int128", "microseconds": 1629023}, + {"group": "two_one_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 90164}, + {"group": "two_one_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 101256}, + {"group": "two_one_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 99370}, + {"group": "two_one_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 112471}, + {"group": "two_one_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 111796}, + {"group": "two_one_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 106859}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 622311}, + {"group": "two_one_word", "operation": "eq", "implementation": "int128", "microseconds": 95357}, + {"group": "two_one_word", "operation": "ne", "implementation": "int128", "microseconds": 99778}, + {"group": "two_one_word", "operation": "lt", "implementation": "int128", "microseconds": 106397}, + {"group": "two_one_word", "operation": "le", "implementation": "int128", "microseconds": 101070}, + {"group": "two_one_word", "operation": "gt", "implementation": "int128", "microseconds": 97401}, + {"group": "two_one_word", "operation": "ge", "implementation": "int128", "microseconds": 103327}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "int128", "microseconds": 603718}, + {"group": "two_one_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 255785}, + {"group": "two_one_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 273519}, + {"group": "two_one_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 240993}, + {"group": "two_one_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 235282}, + {"group": "two_one_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 236381}, + {"group": "two_one_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 228564}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 1470891}, + {"group": "two_one_word", "operation": "eq", "implementation": "absl::int128", "microseconds": 93651}, + {"group": "two_one_word", "operation": "ne", "implementation": "absl::int128", "microseconds": 95288}, + {"group": "two_one_word", "operation": "lt", "implementation": "absl::int128", "microseconds": 97954}, + {"group": "two_one_word", "operation": "le", "implementation": "absl::int128", "microseconds": 101523}, + {"group": "two_one_word", "operation": "gt", "implementation": "absl::int128", "microseconds": 106168}, + {"group": "two_one_word", "operation": "ge", "implementation": "absl::int128", "microseconds": 108147}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "absl::int128", "microseconds": 603095}, + {"group": "two_one_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 85130}, + {"group": "two_one_word", "operation": "add", "implementation": "int128", "microseconds": 84656}, + {"group": "two_one_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1485695}, + {"group": "two_one_word", "operation": "add", "implementation": "absl::int128", "microseconds": 85527}, + {"group": "two_one_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 86519}, + {"group": "two_one_word", "operation": "sub", "implementation": "int128", "microseconds": 85736}, + {"group": "two_one_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1512037}, + {"group": "two_one_word", "operation": "sub", "implementation": "absl::int128", "microseconds": 86102}, + {"group": "two_one_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 533165}, + {"group": "two_one_word", "operation": "mul", "implementation": "int128", "microseconds": 80873}, + {"group": "two_one_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 2158577}, + {"group": "two_one_word", "operation": "mul", "implementation": "absl::int128", "microseconds": 128998}, + {"group": "two_one_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 1745696}, + {"group": "two_one_word", "operation": "div", "implementation": "int128", "microseconds": 1530499}, + {"group": "two_one_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 4686037}, + {"group": "two_one_word", "operation": "div", "implementation": "absl::int128", "microseconds": 19370637}, + {"group": "two_one_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 2172481}, + {"group": "two_one_word", "operation": "mod", "implementation": "int128", "microseconds": 1507286}, + {"group": "two_one_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 4414548}, + {"group": "two_one_word", "operation": "mod", "implementation": "absl::int128", "microseconds": 19360356}, + {"group": "one_two_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 96239}, + {"group": "one_two_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 100506}, + {"group": "one_two_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 96976}, + {"group": "one_two_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 113061}, + {"group": "one_two_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 114226}, + {"group": "one_two_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 111652}, + {"group": "one_two_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 633057}, + {"group": "one_two_word", "operation": "eq", "implementation": "int128", "microseconds": 91136}, + {"group": "one_two_word", "operation": "ne", "implementation": "int128", "microseconds": 92461}, + {"group": "one_two_word", "operation": "lt", "implementation": "int128", "microseconds": 99320}, + {"group": "one_two_word", "operation": "le", "implementation": "int128", "microseconds": 105737}, + {"group": "one_two_word", "operation": "gt", "implementation": "int128", "microseconds": 108051}, + {"group": "one_two_word", "operation": "ge", "implementation": "int128", "microseconds": 101913}, + {"group": "one_two_word", "operation": "comparisons", "implementation": "int128", "microseconds": 598972}, + {"group": "one_two_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 258153}, + {"group": "one_two_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 266233}, + {"group": "one_two_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 224322}, + {"group": "one_two_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 229504}, + {"group": "one_two_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 231507}, + {"group": "one_two_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 232541}, + {"group": "one_two_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 1442649}, + {"group": "one_two_word", "operation": "eq", "implementation": "absl::int128", "microseconds": 91195}, + {"group": "one_two_word", "operation": "ne", "implementation": "absl::int128", "microseconds": 102745}, + {"group": "one_two_word", "operation": "lt", "implementation": "absl::int128", "microseconds": 105643}, + {"group": "one_two_word", "operation": "le", "implementation": "absl::int128", "microseconds": 100451}, + {"group": "one_two_word", "operation": "gt", "implementation": "absl::int128", "microseconds": 100000}, + {"group": "one_two_word", "operation": "ge", "implementation": "absl::int128", "microseconds": 99683}, + {"group": "one_two_word", "operation": "comparisons", "implementation": "absl::int128", "microseconds": 600034}, + {"group": "one_two_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 87344}, + {"group": "one_two_word", "operation": "add", "implementation": "int128", "microseconds": 86343}, + {"group": "one_two_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1485694}, + {"group": "one_two_word", "operation": "add", "implementation": "absl::int128", "microseconds": 93921}, + {"group": "one_two_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 92037}, + {"group": "one_two_word", "operation": "sub", "implementation": "int128", "microseconds": 83623}, + {"group": "one_two_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1509975}, + {"group": "one_two_word", "operation": "sub", "implementation": "absl::int128", "microseconds": 87370}, + {"group": "one_two_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 532669}, + {"group": "one_two_word", "operation": "mul", "implementation": "int128", "microseconds": 80407}, + {"group": "one_two_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 2160377}, + {"group": "one_two_word", "operation": "mul", "implementation": "absl::int128", "microseconds": 129443}, + {"group": "one_two_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 1743566}, + {"group": "one_two_word", "operation": "div", "implementation": "int128", "microseconds": 1531624}, + {"group": "one_two_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 4707031}, + {"group": "one_two_word", "operation": "div", "implementation": "absl::int128", "microseconds": 19370459}, + {"group": "one_two_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 2172145}, + {"group": "one_two_word", "operation": "mod", "implementation": "int128", "microseconds": 1507797}, + {"group": "one_two_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 4415569}, + {"group": "one_two_word", "operation": "mod", "implementation": "absl::int128", "microseconds": 19355138}, + {"group": "random_width", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 93586}, + {"group": "random_width", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 95107}, + {"group": "random_width", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 246956}, + {"group": "random_width", "operation": "le", "implementation": "std::_Signed128", "microseconds": 243101}, + {"group": "random_width", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 242971}, + {"group": "random_width", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 241868}, + {"group": "random_width", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 1163962}, + {"group": "random_width", "operation": "eq", "implementation": "int128", "microseconds": 89624}, + {"group": "random_width", "operation": "ne", "implementation": "int128", "microseconds": 95163}, + {"group": "random_width", "operation": "lt", "implementation": "int128", "microseconds": 229532}, + {"group": "random_width", "operation": "le", "implementation": "int128", "microseconds": 231488}, + {"group": "random_width", "operation": "gt", "implementation": "int128", "microseconds": 249170}, + {"group": "random_width", "operation": "ge", "implementation": "int128", "microseconds": 228845}, + {"group": "random_width", "operation": "comparisons", "implementation": "int128", "microseconds": 1124237}, + {"group": "random_width", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 396138}, + {"group": "random_width", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 398215}, + {"group": "random_width", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 529724}, + {"group": "random_width", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 521182}, + {"group": "random_width", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 526985}, + {"group": "random_width", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 519808}, + {"group": "random_width", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 2892406}, + {"group": "random_width", "operation": "eq", "implementation": "absl::int128", "microseconds": 93260}, + {"group": "random_width", "operation": "ne", "implementation": "absl::int128", "microseconds": 103822}, + {"group": "random_width", "operation": "lt", "implementation": "absl::int128", "microseconds": 252696}, + {"group": "random_width", "operation": "le", "implementation": "absl::int128", "microseconds": 247228}, + {"group": "random_width", "operation": "gt", "implementation": "absl::int128", "microseconds": 253281}, + {"group": "random_width", "operation": "ge", "implementation": "absl::int128", "microseconds": 225671}, + {"group": "random_width", "operation": "comparisons", "implementation": "absl::int128", "microseconds": 1176305}, + {"group": "random_width", "operation": "add", "implementation": "std::_Signed128", "microseconds": 88279}, + {"group": "random_width", "operation": "add", "implementation": "int128", "microseconds": 83389}, + {"group": "random_width", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1604518}, + {"group": "random_width", "operation": "add", "implementation": "absl::int128", "microseconds": 86567}, + {"group": "random_width", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 88880}, + {"group": "random_width", "operation": "sub", "implementation": "int128", "microseconds": 86568}, + {"group": "random_width", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1766980}, + {"group": "random_width", "operation": "sub", "implementation": "absl::int128", "microseconds": 88994}, + {"group": "random_width", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 532086}, + {"group": "random_width", "operation": "mul", "implementation": "int128", "microseconds": 81119}, + {"group": "random_width", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 2389516}, + {"group": "random_width", "operation": "mul", "implementation": "absl::int128", "microseconds": 129947}, + {"group": "random_width", "operation": "div", "implementation": "std::_Signed128", "microseconds": 1507951}, + {"group": "random_width", "operation": "div", "implementation": "int128", "microseconds": 1480214}, + {"group": "random_width", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 3623405}, + {"group": "random_width", "operation": "div", "implementation": "absl::int128", "microseconds": 10773260}, + {"group": "random_width", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 1720557}, + {"group": "random_width", "operation": "mod", "implementation": "int128", "microseconds": 1443956}, + {"group": "random_width", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 3531333}, + {"group": "random_width", "operation": "mod", "implementation": "absl::int128", "microseconds": 10797356}, + {"group": "random_width", "operation": "shl", "implementation": "std::_Signed128", "microseconds": 329869}, + {"group": "random_width", "operation": "shl", "implementation": "int128", "microseconds": 342193}, + {"group": "random_width", "operation": "shl", "implementation": "boost::mp::int128", "microseconds": 1751441}, + {"group": "random_width", "operation": "shl", "implementation": "absl::int128", "microseconds": 315585}, + {"group": "random_width", "operation": "shr", "implementation": "std::_Signed128", "microseconds": 314173}, + {"group": "random_width", "operation": "shr", "implementation": "int128", "microseconds": 299258}, + {"group": "random_width", "operation": "shr", "implementation": "boost::mp::int128", "microseconds": 1183163}, + {"group": "random_width", "operation": "shr", "implementation": "absl::int128", "microseconds": 350129} ] } diff --git a/doc/modules/ROOT/data/benchmarks-windows-arm64/u128.json b/doc/modules/ROOT/data/benchmarks-windows-arm64/u128.json index 6bd02db8..c83370f5 100644 --- a/doc/modules/ROOT/data/benchmarks-windows-arm64/u128.json +++ b/doc/modules/ROOT/data/benchmarks-windows-arm64/u128.json @@ -9,208 +9,267 @@ "elements": 20000000, "repetitions": 5, "baseline": "std::_Unsigned128", - "implementations": ["std::_Unsigned128", "uint128", "boost::mp::uint128"], + "implementations": ["std::_Unsigned128", "uint128", "boost::mp::uint128", "absl::uint128"], "results": [ - {"group": "two_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 100360}, - {"group": "two_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 101552}, - {"group": "two_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 102523}, - {"group": "two_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 117438}, - {"group": "two_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 120464}, - {"group": "two_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 123267}, - {"group": "two_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 666098}, - {"group": "two_word", "operation": "eq", "implementation": "uint128", "microseconds": 94201}, - {"group": "two_word", "operation": "ne", "implementation": "uint128", "microseconds": 101220}, - {"group": "two_word", "operation": "lt", "implementation": "uint128", "microseconds": 138902}, - {"group": "two_word", "operation": "le", "implementation": "uint128", "microseconds": 141856}, - {"group": "two_word", "operation": "gt", "implementation": "uint128", "microseconds": 145539}, - {"group": "two_word", "operation": "ge", "implementation": "uint128", "microseconds": 141501}, - {"group": "two_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 763613}, - {"group": "two_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 162195}, - {"group": "two_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 226487}, - {"group": "two_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 455039}, - {"group": "two_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 454108}, - {"group": "two_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 509980}, - {"group": "two_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 460324}, - {"group": "two_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 2268555}, - {"group": "two_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 85243}, - {"group": "two_word", "operation": "add", "implementation": "uint128", "microseconds": 88185}, - {"group": "two_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 1210617}, - {"group": "two_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 91544}, - {"group": "two_word", "operation": "sub", "implementation": "uint128", "microseconds": 87401}, - {"group": "two_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 1390577}, - {"group": "two_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 455541}, - {"group": "two_word", "operation": "mul", "implementation": "uint128", "microseconds": 81048}, - {"group": "two_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 1998709}, - {"group": "two_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 1040396}, - {"group": "two_word", "operation": "div", "implementation": "uint128", "microseconds": 911416}, - {"group": "two_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 2312577}, - {"group": "two_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 1226865}, - {"group": "two_word", "operation": "mod", "implementation": "uint128", "microseconds": 978268}, - {"group": "two_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 2260183}, - {"group": "two_word", "operation": "div64", "implementation": "std::_Unsigned128", "microseconds": 2782425}, - {"group": "two_word", "operation": "div64", "implementation": "uint128", "microseconds": 1628674}, - {"group": "two_word", "operation": "div64", "implementation": "boost::mp::uint128", "microseconds": 8196306}, - {"group": "two_word", "operation": "div32", "implementation": "std::_Unsigned128", "microseconds": 1137917}, - {"group": "two_word", "operation": "div32", "implementation": "uint128", "microseconds": 1199014}, - {"group": "two_word", "operation": "div32", "implementation": "boost::mp::uint128", "microseconds": 3691618}, - {"group": "one_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 92569}, - {"group": "one_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 98239}, - {"group": "one_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 137748}, - {"group": "one_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 145330}, - {"group": "one_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 144451}, - {"group": "one_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 147857}, - {"group": "one_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 766566}, - {"group": "one_word", "operation": "eq", "implementation": "uint128", "microseconds": 99248}, - {"group": "one_word", "operation": "ne", "implementation": "uint128", "microseconds": 108100}, - {"group": "one_word", "operation": "lt", "implementation": "uint128", "microseconds": 137525}, - {"group": "one_word", "operation": "le", "implementation": "uint128", "microseconds": 136559}, - {"group": "one_word", "operation": "gt", "implementation": "uint128", "microseconds": 145550}, - {"group": "one_word", "operation": "ge", "implementation": "uint128", "microseconds": 147027}, - {"group": "one_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 774380}, - {"group": "one_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 165125}, - {"group": "one_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 225860}, - {"group": "one_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 454895}, - {"group": "one_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 447587}, - {"group": "one_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 510614}, - {"group": "one_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 462241}, - {"group": "one_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 2266716}, - {"group": "one_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 95555}, - {"group": "one_word", "operation": "add", "implementation": "uint128", "microseconds": 93772}, - {"group": "one_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 1090814}, - {"group": "one_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 86278}, - {"group": "one_word", "operation": "sub", "implementation": "uint128", "microseconds": 85063}, - {"group": "one_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 1323505}, - {"group": "one_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 454907}, - {"group": "one_word", "operation": "mul", "implementation": "uint128", "microseconds": 89410}, - {"group": "one_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 1427067}, - {"group": "one_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 353794}, - {"group": "one_word", "operation": "div", "implementation": "uint128", "microseconds": 464183}, - {"group": "one_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 1216283}, - {"group": "one_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 673643}, - {"group": "one_word", "operation": "mod", "implementation": "uint128", "microseconds": 534781}, - {"group": "one_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 1265672}, - {"group": "two_one_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 100045}, - {"group": "two_one_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 102545}, - {"group": "two_one_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 102844}, - {"group": "two_one_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 117753}, - {"group": "two_one_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 119678}, - {"group": "two_one_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 124118}, - {"group": "two_one_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 667393}, - {"group": "two_one_word", "operation": "eq", "implementation": "uint128", "microseconds": 93796}, - {"group": "two_one_word", "operation": "ne", "implementation": "uint128", "microseconds": 102504}, - {"group": "two_one_word", "operation": "lt", "implementation": "uint128", "microseconds": 137236}, - {"group": "two_one_word", "operation": "le", "implementation": "uint128", "microseconds": 137667}, - {"group": "two_one_word", "operation": "gt", "implementation": "uint128", "microseconds": 143743}, - {"group": "two_one_word", "operation": "ge", "implementation": "uint128", "microseconds": 144346}, - {"group": "two_one_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 759708}, - {"group": "two_one_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 127968}, - {"group": "two_one_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 162206}, - {"group": "two_one_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 173116}, - {"group": "two_one_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 192679}, - {"group": "two_one_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 190475}, - {"group": "two_one_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 173552}, - {"group": "two_one_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 1020437}, - {"group": "two_one_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 87418}, - {"group": "two_one_word", "operation": "add", "implementation": "uint128", "microseconds": 87337}, - {"group": "two_one_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 1248195}, - {"group": "two_one_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 90329}, - {"group": "two_one_word", "operation": "sub", "implementation": "uint128", "microseconds": 86841}, - {"group": "two_one_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 1388005}, - {"group": "two_one_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 456045}, - {"group": "two_one_word", "operation": "mul", "implementation": "uint128", "microseconds": 81626}, - {"group": "two_one_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 1734186}, - {"group": "two_one_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 1765475}, - {"group": "two_one_word", "operation": "div", "implementation": "uint128", "microseconds": 1026385}, - {"group": "two_one_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 4451739}, - {"group": "two_one_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 2120280}, - {"group": "two_one_word", "operation": "mod", "implementation": "uint128", "microseconds": 954960}, - {"group": "two_one_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 4187624}, - {"group": "one_two_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 98930}, - {"group": "one_two_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 101913}, - {"group": "one_two_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 104964}, - {"group": "one_two_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 121407}, - {"group": "one_two_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 121994}, - {"group": "one_two_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 126166}, - {"group": "one_two_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 675754}, - {"group": "one_two_word", "operation": "eq", "implementation": "uint128", "microseconds": 98353}, - {"group": "one_two_word", "operation": "ne", "implementation": "uint128", "microseconds": 106028}, - {"group": "one_two_word", "operation": "lt", "implementation": "uint128", "microseconds": 136914}, - {"group": "one_two_word", "operation": "le", "implementation": "uint128", "microseconds": 138517}, - {"group": "one_two_word", "operation": "gt", "implementation": "uint128", "microseconds": 142954}, - {"group": "one_two_word", "operation": "ge", "implementation": "uint128", "microseconds": 144139}, - {"group": "one_two_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 767301}, - {"group": "one_two_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 127480}, - {"group": "one_two_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 162637}, - {"group": "one_two_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 170810}, - {"group": "one_two_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 199572}, - {"group": "one_two_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 195143}, - {"group": "one_two_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 173631}, - {"group": "one_two_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 1029634}, - {"group": "one_two_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 85972}, - {"group": "one_two_word", "operation": "add", "implementation": "uint128", "microseconds": 87724}, - {"group": "one_two_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 1249922}, - {"group": "one_two_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 90283}, - {"group": "one_two_word", "operation": "sub", "implementation": "uint128", "microseconds": 87827}, - {"group": "one_two_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 1387555}, - {"group": "one_two_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 456049}, - {"group": "one_two_word", "operation": "mul", "implementation": "uint128", "microseconds": 97489}, - {"group": "one_two_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 1737327}, - {"group": "one_two_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 1766496}, - {"group": "one_two_word", "operation": "div", "implementation": "uint128", "microseconds": 1027438}, - {"group": "one_two_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 4457200}, - {"group": "one_two_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 2122346}, - {"group": "one_two_word", "operation": "mod", "implementation": "uint128", "microseconds": 954656}, - {"group": "one_two_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 4188477}, - {"group": "random_width", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 99891}, - {"group": "random_width", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 98800}, - {"group": "random_width", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 287160}, - {"group": "random_width", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 277175}, - {"group": "random_width", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 254488}, - {"group": "random_width", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 244334}, - {"group": "random_width", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 1262216}, - {"group": "random_width", "operation": "eq", "implementation": "uint128", "microseconds": 91780}, - {"group": "random_width", "operation": "ne", "implementation": "uint128", "microseconds": 103496}, - {"group": "random_width", "operation": "lt", "implementation": "uint128", "microseconds": 138065}, - {"group": "random_width", "operation": "le", "implementation": "uint128", "microseconds": 137683}, - {"group": "random_width", "operation": "gt", "implementation": "uint128", "microseconds": 139323}, - {"group": "random_width", "operation": "ge", "implementation": "uint128", "microseconds": 142637}, - {"group": "random_width", "operation": "comparisons", "implementation": "uint128", "microseconds": 753322}, - {"group": "random_width", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 233263}, - {"group": "random_width", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 278490}, - {"group": "random_width", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 295541}, - {"group": "random_width", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 326875}, - {"group": "random_width", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 323186}, - {"group": "random_width", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 299314}, - {"group": "random_width", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 1757122}, - {"group": "random_width", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 86038}, - {"group": "random_width", "operation": "add", "implementation": "uint128", "microseconds": 84791}, - {"group": "random_width", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 1535904}, - {"group": "random_width", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 86521}, - {"group": "random_width", "operation": "sub", "implementation": "uint128", "microseconds": 87885}, - {"group": "random_width", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 1712929}, - {"group": "random_width", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 458107}, - {"group": "random_width", "operation": "mul", "implementation": "uint128", "microseconds": 82947}, - {"group": "random_width", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 1780541}, - {"group": "random_width", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 1334323}, - {"group": "random_width", "operation": "div", "implementation": "uint128", "microseconds": 920483}, - {"group": "random_width", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 2843970}, - {"group": "random_width", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 1491426}, - {"group": "random_width", "operation": "mod", "implementation": "uint128", "microseconds": 915935}, - {"group": "random_width", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 2420312}, - {"group": "random_width", "operation": "shl", "implementation": "std::_Unsigned128", "microseconds": 321758}, - {"group": "random_width", "operation": "shl", "implementation": "uint128", "microseconds": 310332}, - {"group": "random_width", "operation": "shl", "implementation": "boost::mp::uint128", "microseconds": 1841484}, - {"group": "random_width", "operation": "shr", "implementation": "std::_Unsigned128", "microseconds": 306783}, - {"group": "random_width", "operation": "shr", "implementation": "uint128", "microseconds": 345569}, - {"group": "random_width", "operation": "shr", "implementation": "boost::mp::uint128", "microseconds": 1047658}, - {"group": "random_width", "operation": "and", "implementation": "std::_Unsigned128", "microseconds": 79688}, - {"group": "random_width", "operation": "and", "implementation": "uint128", "microseconds": 86011}, - {"group": "random_width", "operation": "and", "implementation": "boost::mp::uint128", "microseconds": 1450863}, - {"group": "random_width", "operation": "or", "implementation": "std::_Unsigned128", "microseconds": 80450}, - {"group": "random_width", "operation": "or", "implementation": "uint128", "microseconds": 85630}, - {"group": "random_width", "operation": "or", "implementation": "boost::mp::uint128", "microseconds": 1383602}, - {"group": "random_width", "operation": "xor", "implementation": "std::_Unsigned128", "microseconds": 81021}, - {"group": "random_width", "operation": "xor", "implementation": "uint128", "microseconds": 85832}, - {"group": "random_width", "operation": "xor", "implementation": "boost::mp::uint128", "microseconds": 1382799} + {"group": "two_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 93979}, + {"group": "two_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 100765}, + {"group": "two_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 102946}, + {"group": "two_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 113426}, + {"group": "two_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 112672}, + {"group": "two_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 120930}, + {"group": "two_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 645225}, + {"group": "two_word", "operation": "eq", "implementation": "uint128", "microseconds": 96058}, + {"group": "two_word", "operation": "ne", "implementation": "uint128", "microseconds": 105572}, + {"group": "two_word", "operation": "lt", "implementation": "uint128", "microseconds": 133404}, + {"group": "two_word", "operation": "le", "implementation": "uint128", "microseconds": 137548}, + {"group": "two_word", "operation": "gt", "implementation": "uint128", "microseconds": 144531}, + {"group": "two_word", "operation": "ge", "implementation": "uint128", "microseconds": 141840}, + {"group": "two_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 759317}, + {"group": "two_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 228812}, + {"group": "two_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 240766}, + {"group": "two_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 458582}, + {"group": "two_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 446469}, + {"group": "two_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 512290}, + {"group": "two_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 467082}, + {"group": "two_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 2354457}, + {"group": "two_word", "operation": "eq", "implementation": "absl::uint128", "microseconds": 104077}, + {"group": "two_word", "operation": "ne", "implementation": "absl::uint128", "microseconds": 105774}, + {"group": "two_word", "operation": "lt", "implementation": "absl::uint128", "microseconds": 111874}, + {"group": "two_word", "operation": "le", "implementation": "absl::uint128", "microseconds": 107645}, + {"group": "two_word", "operation": "gt", "implementation": "absl::uint128", "microseconds": 109577}, + {"group": "two_word", "operation": "ge", "implementation": "absl::uint128", "microseconds": 107626}, + {"group": "two_word", "operation": "comparisons", "implementation": "absl::uint128", "microseconds": 646995}, + {"group": "two_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 90353}, + {"group": "two_word", "operation": "add", "implementation": "uint128", "microseconds": 86967}, + {"group": "two_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 1221182}, + {"group": "two_word", "operation": "add", "implementation": "absl::uint128", "microseconds": 87663}, + {"group": "two_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 90350}, + {"group": "two_word", "operation": "sub", "implementation": "uint128", "microseconds": 89462}, + {"group": "two_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 1399016}, + {"group": "two_word", "operation": "sub", "implementation": "absl::uint128", "microseconds": 88827}, + {"group": "two_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 458806}, + {"group": "two_word", "operation": "mul", "implementation": "uint128", "microseconds": 85857}, + {"group": "two_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 2025013}, + {"group": "two_word", "operation": "mul", "implementation": "absl::uint128", "microseconds": 132564}, + {"group": "two_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 1042610}, + {"group": "two_word", "operation": "div", "implementation": "uint128", "microseconds": 934532}, + {"group": "two_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 2331791}, + {"group": "two_word", "operation": "div", "implementation": "absl::uint128", "microseconds": 1424275}, + {"group": "two_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 1227405}, + {"group": "two_word", "operation": "mod", "implementation": "uint128", "microseconds": 1009755}, + {"group": "two_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 2478891}, + {"group": "two_word", "operation": "mod", "implementation": "absl::uint128", "microseconds": 1383445}, + {"group": "two_word", "operation": "div64", "implementation": "std::_Unsigned128", "microseconds": 2769180}, + {"group": "two_word", "operation": "div64", "implementation": "uint128", "microseconds": 1644109}, + {"group": "two_word", "operation": "div64", "implementation": "boost::mp::uint128", "microseconds": 8190282}, + {"group": "two_word", "operation": "div64", "implementation": "absl::uint128", "microseconds": 38615572}, + {"group": "two_word", "operation": "div32", "implementation": "std::_Unsigned128", "microseconds": 1139395}, + {"group": "two_word", "operation": "div32", "implementation": "uint128", "microseconds": 1217388}, + {"group": "two_word", "operation": "div32", "implementation": "boost::mp::uint128", "microseconds": 3795664}, + {"group": "two_word", "operation": "div32", "implementation": "absl::uint128", "microseconds": 53405206}, + {"group": "one_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 96193}, + {"group": "one_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 98157}, + {"group": "one_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 132561}, + {"group": "one_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 141624}, + {"group": "one_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 137951}, + {"group": "one_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 142247}, + {"group": "one_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 749141}, + {"group": "one_word", "operation": "eq", "implementation": "uint128", "microseconds": 93491}, + {"group": "one_word", "operation": "ne", "implementation": "uint128", "microseconds": 107204}, + {"group": "one_word", "operation": "lt", "implementation": "uint128", "microseconds": 137933}, + {"group": "one_word", "operation": "le", "implementation": "uint128", "microseconds": 134638}, + {"group": "one_word", "operation": "gt", "implementation": "uint128", "microseconds": 136479}, + {"group": "one_word", "operation": "ge", "implementation": "uint128", "microseconds": 138037}, + {"group": "one_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 748203}, + {"group": "one_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 230456}, + {"group": "one_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 228528}, + {"group": "one_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 457015}, + {"group": "one_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 446212}, + {"group": "one_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 510890}, + {"group": "one_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 460702}, + {"group": "one_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 2334190}, + {"group": "one_word", "operation": "eq", "implementation": "absl::uint128", "microseconds": 93810}, + {"group": "one_word", "operation": "ne", "implementation": "absl::uint128", "microseconds": 93883}, + {"group": "one_word", "operation": "lt", "implementation": "absl::uint128", "microseconds": 128518}, + {"group": "one_word", "operation": "le", "implementation": "absl::uint128", "microseconds": 131857}, + {"group": "one_word", "operation": "gt", "implementation": "absl::uint128", "microseconds": 128754}, + {"group": "one_word", "operation": "ge", "implementation": "absl::uint128", "microseconds": 128503}, + {"group": "one_word", "operation": "comparisons", "implementation": "absl::uint128", "microseconds": 705665}, + {"group": "one_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 89741}, + {"group": "one_word", "operation": "add", "implementation": "uint128", "microseconds": 114222}, + {"group": "one_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 1094423}, + {"group": "one_word", "operation": "add", "implementation": "absl::uint128", "microseconds": 88263}, + {"group": "one_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 88648}, + {"group": "one_word", "operation": "sub", "implementation": "uint128", "microseconds": 86174}, + {"group": "one_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 1323679}, + {"group": "one_word", "operation": "sub", "implementation": "absl::uint128", "microseconds": 88139}, + {"group": "one_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 458147}, + {"group": "one_word", "operation": "mul", "implementation": "uint128", "microseconds": 83573}, + {"group": "one_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 1468219}, + {"group": "one_word", "operation": "mul", "implementation": "absl::uint128", "microseconds": 127460}, + {"group": "one_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 364199}, + {"group": "one_word", "operation": "div", "implementation": "uint128", "microseconds": 464365}, + {"group": "one_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 1266941}, + {"group": "one_word", "operation": "div", "implementation": "absl::uint128", "microseconds": 1326073}, + {"group": "one_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 673011}, + {"group": "one_word", "operation": "mod", "implementation": "uint128", "microseconds": 534084}, + {"group": "one_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 1272684}, + {"group": "two_one_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 94307}, + {"group": "two_one_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 95822}, + {"group": "two_one_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 97409}, + {"group": "two_one_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 112908}, + {"group": "two_one_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 119322}, + {"group": "two_one_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 119180}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 639332}, + {"group": "two_one_word", "operation": "eq", "implementation": "uint128", "microseconds": 91228}, + {"group": "two_one_word", "operation": "ne", "implementation": "uint128", "microseconds": 98527}, + {"group": "two_one_word", "operation": "lt", "implementation": "uint128", "microseconds": 132145}, + {"group": "two_one_word", "operation": "le", "implementation": "uint128", "microseconds": 133003}, + {"group": "two_one_word", "operation": "gt", "implementation": "uint128", "microseconds": 137812}, + {"group": "two_one_word", "operation": "ge", "implementation": "uint128", "microseconds": 140749}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 733885}, + {"group": "two_one_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 221945}, + {"group": "two_one_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 215867}, + {"group": "two_one_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 166068}, + {"group": "two_one_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 195133}, + {"group": "two_one_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 186636}, + {"group": "two_one_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 170060}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 1156152}, + {"group": "two_one_word", "operation": "eq", "implementation": "absl::uint128", "microseconds": 97455}, + {"group": "two_one_word", "operation": "ne", "implementation": "absl::uint128", "microseconds": 98857}, + {"group": "two_one_word", "operation": "lt", "implementation": "absl::uint128", "microseconds": 100128}, + {"group": "two_one_word", "operation": "le", "implementation": "absl::uint128", "microseconds": 100991}, + {"group": "two_one_word", "operation": "gt", "implementation": "absl::uint128", "microseconds": 105728}, + {"group": "two_one_word", "operation": "ge", "implementation": "absl::uint128", "microseconds": 102293}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "absl::uint128", "microseconds": 605804}, + {"group": "two_one_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 89949}, + {"group": "two_one_word", "operation": "add", "implementation": "uint128", "microseconds": 87272}, + {"group": "two_one_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 1247063}, + {"group": "two_one_word", "operation": "add", "implementation": "absl::uint128", "microseconds": 87828}, + {"group": "two_one_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 88764}, + {"group": "two_one_word", "operation": "sub", "implementation": "uint128", "microseconds": 87296}, + {"group": "two_one_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 1381202}, + {"group": "two_one_word", "operation": "sub", "implementation": "absl::uint128", "microseconds": 88339}, + {"group": "two_one_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 457095}, + {"group": "two_one_word", "operation": "mul", "implementation": "uint128", "microseconds": 81178}, + {"group": "two_one_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 1777392}, + {"group": "two_one_word", "operation": "mul", "implementation": "absl::uint128", "microseconds": 128139}, + {"group": "two_one_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 1750373}, + {"group": "two_one_word", "operation": "div", "implementation": "uint128", "microseconds": 1023324}, + {"group": "two_one_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 4405842}, + {"group": "two_one_word", "operation": "div", "implementation": "absl::uint128", "microseconds": 19342386}, + {"group": "two_one_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 2108264}, + {"group": "two_one_word", "operation": "mod", "implementation": "uint128", "microseconds": 961595}, + {"group": "two_one_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 4162443}, + {"group": "two_one_word", "operation": "mod", "implementation": "absl::uint128", "microseconds": 19304246}, + {"group": "one_two_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 97434}, + {"group": "one_two_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 100046}, + {"group": "one_two_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 98947}, + {"group": "one_two_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 108461}, + {"group": "one_two_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 110209}, + {"group": "one_two_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 119337}, + {"group": "one_two_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 634784}, + {"group": "one_two_word", "operation": "eq", "implementation": "uint128", "microseconds": 93643}, + {"group": "one_two_word", "operation": "ne", "implementation": "uint128", "microseconds": 97208}, + {"group": "one_two_word", "operation": "lt", "implementation": "uint128", "microseconds": 131009}, + {"group": "one_two_word", "operation": "le", "implementation": "uint128", "microseconds": 131335}, + {"group": "one_two_word", "operation": "gt", "implementation": "uint128", "microseconds": 136979}, + {"group": "one_two_word", "operation": "ge", "implementation": "uint128", "microseconds": 135916}, + {"group": "one_two_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 726399}, + {"group": "one_two_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 212472}, + {"group": "one_two_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 224136}, + {"group": "one_two_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 159589}, + {"group": "one_two_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 184381}, + {"group": "one_two_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 184861}, + {"group": "one_two_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 155025}, + {"group": "one_two_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 1120865}, + {"group": "one_two_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 88904}, + {"group": "one_two_word", "operation": "add", "implementation": "uint128", "microseconds": 87540}, + {"group": "one_two_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 1245636}, + {"group": "one_two_word", "operation": "add", "implementation": "absl::uint128", "microseconds": 87276}, + {"group": "one_two_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 89167}, + {"group": "one_two_word", "operation": "sub", "implementation": "uint128", "microseconds": 87554}, + {"group": "one_two_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 1401045}, + {"group": "one_two_word", "operation": "sub", "implementation": "absl::uint128", "microseconds": 87893}, + {"group": "one_two_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 457710}, + {"group": "one_two_word", "operation": "mul", "implementation": "uint128", "microseconds": 82841}, + {"group": "one_two_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 1776548}, + {"group": "one_two_word", "operation": "mul", "implementation": "absl::uint128", "microseconds": 126381}, + {"group": "one_two_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 1752658}, + {"group": "one_two_word", "operation": "div", "implementation": "uint128", "microseconds": 1020049}, + {"group": "one_two_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 4402616}, + {"group": "one_two_word", "operation": "div", "implementation": "absl::uint128", "microseconds": 19336275}, + {"group": "one_two_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 2106866}, + {"group": "one_two_word", "operation": "mod", "implementation": "uint128", "microseconds": 956510}, + {"group": "one_two_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 4183310}, + {"group": "one_two_word", "operation": "mod", "implementation": "absl::uint128", "microseconds": 19309780}, + {"group": "random_width", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 96758}, + {"group": "random_width", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 97178}, + {"group": "random_width", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 283025}, + {"group": "random_width", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 240551}, + {"group": "random_width", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 240240}, + {"group": "random_width", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 239917}, + {"group": "random_width", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 1198039}, + {"group": "random_width", "operation": "eq", "implementation": "uint128", "microseconds": 92910}, + {"group": "random_width", "operation": "ne", "implementation": "uint128", "microseconds": 99497}, + {"group": "random_width", "operation": "lt", "implementation": "uint128", "microseconds": 132939}, + {"group": "random_width", "operation": "le", "implementation": "uint128", "microseconds": 133576}, + {"group": "random_width", "operation": "gt", "implementation": "uint128", "microseconds": 137917}, + {"group": "random_width", "operation": "ge", "implementation": "uint128", "microseconds": 152377}, + {"group": "random_width", "operation": "comparisons", "implementation": "uint128", "microseconds": 749538}, + {"group": "random_width", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 240818}, + {"group": "random_width", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 280683}, + {"group": "random_width", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 313628}, + {"group": "random_width", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 326135}, + {"group": "random_width", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 320986}, + {"group": "random_width", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 297462}, + {"group": "random_width", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 1780083}, + {"group": "random_width", "operation": "eq", "implementation": "absl::uint128", "microseconds": 97450}, + {"group": "random_width", "operation": "ne", "implementation": "absl::uint128", "microseconds": 101321}, + {"group": "random_width", "operation": "lt", "implementation": "absl::uint128", "microseconds": 254540}, + {"group": "random_width", "operation": "le", "implementation": "absl::uint128", "microseconds": 224182}, + {"group": "random_width", "operation": "gt", "implementation": "absl::uint128", "microseconds": 246493}, + {"group": "random_width", "operation": "ge", "implementation": "absl::uint128", "microseconds": 222551}, + {"group": "random_width", "operation": "comparisons", "implementation": "absl::uint128", "microseconds": 1146973}, + {"group": "random_width", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 88759}, + {"group": "random_width", "operation": "add", "implementation": "uint128", "microseconds": 85378}, + {"group": "random_width", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 1534492}, + {"group": "random_width", "operation": "add", "implementation": "absl::uint128", "microseconds": 86222}, + {"group": "random_width", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 86292}, + {"group": "random_width", "operation": "sub", "implementation": "uint128", "microseconds": 84435}, + {"group": "random_width", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 1707180}, + {"group": "random_width", "operation": "sub", "implementation": "absl::uint128", "microseconds": 92099}, + {"group": "random_width", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 457638}, + {"group": "random_width", "operation": "mul", "implementation": "uint128", "microseconds": 83669}, + {"group": "random_width", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 1785505}, + {"group": "random_width", "operation": "mul", "implementation": "absl::uint128", "microseconds": 127263}, + {"group": "random_width", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 1337104}, + {"group": "random_width", "operation": "div", "implementation": "uint128", "microseconds": 921115}, + {"group": "random_width", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 2824979}, + {"group": "random_width", "operation": "div", "implementation": "absl::uint128", "microseconds": 12558253}, + {"group": "random_width", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 1488718}, + {"group": "random_width", "operation": "mod", "implementation": "uint128", "microseconds": 918404}, + {"group": "random_width", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 2433789}, + {"group": "random_width", "operation": "mod", "implementation": "absl::uint128", "microseconds": 12522017}, + {"group": "random_width", "operation": "shl", "implementation": "std::_Unsigned128", "microseconds": 326029}, + {"group": "random_width", "operation": "shl", "implementation": "uint128", "microseconds": 315634}, + {"group": "random_width", "operation": "shl", "implementation": "boost::mp::uint128", "microseconds": 1705942}, + {"group": "random_width", "operation": "shl", "implementation": "absl::uint128", "microseconds": 302490}, + {"group": "random_width", "operation": "shr", "implementation": "std::_Unsigned128", "microseconds": 313887}, + {"group": "random_width", "operation": "shr", "implementation": "uint128", "microseconds": 346485}, + {"group": "random_width", "operation": "shr", "implementation": "boost::mp::uint128", "microseconds": 1043904}, + {"group": "random_width", "operation": "shr", "implementation": "absl::uint128", "microseconds": 307271}, + {"group": "random_width", "operation": "and", "implementation": "std::_Unsigned128", "microseconds": 82503}, + {"group": "random_width", "operation": "and", "implementation": "uint128", "microseconds": 86674}, + {"group": "random_width", "operation": "and", "implementation": "boost::mp::uint128", "microseconds": 1485238}, + {"group": "random_width", "operation": "and", "implementation": "absl::uint128", "microseconds": 88465}, + {"group": "random_width", "operation": "or", "implementation": "std::_Unsigned128", "microseconds": 84863}, + {"group": "random_width", "operation": "or", "implementation": "uint128", "microseconds": 89713}, + {"group": "random_width", "operation": "or", "implementation": "boost::mp::uint128", "microseconds": 1391061}, + {"group": "random_width", "operation": "or", "implementation": "absl::uint128", "microseconds": 87810}, + {"group": "random_width", "operation": "xor", "implementation": "std::_Unsigned128", "microseconds": 86281}, + {"group": "random_width", "operation": "xor", "implementation": "uint128", "microseconds": 89044}, + {"group": "random_width", "operation": "xor", "implementation": "boost::mp::uint128", "microseconds": 1394775}, + {"group": "random_width", "operation": "xor", "implementation": "absl::uint128", "microseconds": 86170} ] } diff --git a/doc/modules/ROOT/data/benchmarks-windows-x64/i128.json b/doc/modules/ROOT/data/benchmarks-windows-x64/i128.json index 96797e4c..1343b21a 100644 --- a/doc/modules/ROOT/data/benchmarks-windows-x64/i128.json +++ b/doc/modules/ROOT/data/benchmarks-windows-x64/i128.json @@ -9,199 +9,263 @@ "elements": 20000000, "repetitions": 5, "baseline": "std::_Signed128", - "implementations": ["std::_Signed128", "int128", "boost::mp::int128"], + "implementations": ["std::_Signed128", "int128", "boost::mp::int128", "absl::int128"], "results": [ - {"group": "two_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 97495}, - {"group": "two_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 95312}, - {"group": "two_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 113650}, - {"group": "two_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 116160}, - {"group": "two_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 123457}, - {"group": "two_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 121013}, - {"group": "two_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 667643}, - {"group": "two_word", "operation": "eq", "implementation": "int128", "microseconds": 101883}, - {"group": "two_word", "operation": "ne", "implementation": "int128", "microseconds": 99937}, - {"group": "two_word", "operation": "lt", "implementation": "int128", "microseconds": 116216}, - {"group": "two_word", "operation": "le", "implementation": "int128", "microseconds": 97760}, - {"group": "two_word", "operation": "gt", "implementation": "int128", "microseconds": 113131}, - {"group": "two_word", "operation": "ge", "implementation": "int128", "microseconds": 102515}, - {"group": "two_word", "operation": "comparisons", "implementation": "int128", "microseconds": 631930}, - {"group": "two_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 269282}, - {"group": "two_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 254759}, - {"group": "two_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 359854}, - {"group": "two_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 341488}, - {"group": "two_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 341010}, - {"group": "two_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 366251}, - {"group": "two_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 1933005}, - {"group": "two_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 115772}, - {"group": "two_word", "operation": "add", "implementation": "int128", "microseconds": 111073}, - {"group": "two_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1620723}, - {"group": "two_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 108075}, - {"group": "two_word", "operation": "sub", "implementation": "int128", "microseconds": 108740}, - {"group": "two_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 2107567}, - {"group": "two_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 198154}, - {"group": "two_word", "operation": "mul", "implementation": "int128", "microseconds": 114653}, - {"group": "two_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 3100514}, - {"group": "two_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 1090822}, - {"group": "two_word", "operation": "div", "implementation": "int128", "microseconds": 1163678}, - {"group": "two_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 2711779}, - {"group": "two_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 1221749}, - {"group": "two_word", "operation": "mod", "implementation": "int128", "microseconds": 1291719}, - {"group": "two_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 3170071}, - {"group": "two_word", "operation": "div64", "implementation": "std::_Signed128", "microseconds": 610230}, - {"group": "two_word", "operation": "div64", "implementation": "int128", "microseconds": 611281}, - {"group": "two_word", "operation": "div64", "implementation": "boost::mp::int128", "microseconds": 9872432}, - {"group": "two_word", "operation": "div32", "implementation": "std::_Signed128", "microseconds": 609932}, - {"group": "two_word", "operation": "div32", "implementation": "int128", "microseconds": 609887}, - {"group": "two_word", "operation": "div32", "implementation": "boost::mp::int128", "microseconds": 3374887}, - {"group": "one_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 103741}, - {"group": "one_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 104789}, - {"group": "one_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 141945}, - {"group": "one_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 142807}, - {"group": "one_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 142440}, - {"group": "one_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 142794}, - {"group": "one_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 778930}, - {"group": "one_word", "operation": "eq", "implementation": "int128", "microseconds": 103637}, - {"group": "one_word", "operation": "ne", "implementation": "int128", "microseconds": 101572}, - {"group": "one_word", "operation": "lt", "implementation": "int128", "microseconds": 121346}, - {"group": "one_word", "operation": "le", "implementation": "int128", "microseconds": 121731}, - {"group": "one_word", "operation": "gt", "implementation": "int128", "microseconds": 120832}, - {"group": "one_word", "operation": "ge", "implementation": "int128", "microseconds": 119015}, - {"group": "one_word", "operation": "comparisons", "implementation": "int128", "microseconds": 688546}, - {"group": "one_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 273014}, - {"group": "one_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 257839}, - {"group": "one_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 362908}, - {"group": "one_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 345074}, - {"group": "one_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 345548}, - {"group": "one_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 368476}, - {"group": "one_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 1953220}, - {"group": "one_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 116371}, - {"group": "one_word", "operation": "add", "implementation": "int128", "microseconds": 108525}, - {"group": "one_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1618900}, - {"group": "one_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 110491}, - {"group": "one_word", "operation": "sub", "implementation": "int128", "microseconds": 106162}, - {"group": "one_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1781745}, - {"group": "one_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 197400}, - {"group": "one_word", "operation": "mul", "implementation": "int128", "microseconds": 115300}, - {"group": "one_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 2354709}, - {"group": "one_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 600573}, - {"group": "one_word", "operation": "div", "implementation": "int128", "microseconds": 895385}, - {"group": "one_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 1844891}, - {"group": "one_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 819666}, - {"group": "one_word", "operation": "mod", "implementation": "int128", "microseconds": 969214}, - {"group": "one_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 1941634}, - {"group": "two_one_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 99479}, - {"group": "two_one_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 98439}, - {"group": "two_one_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 114749}, - {"group": "two_one_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 115951}, - {"group": "two_one_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 114376}, - {"group": "two_one_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 114981}, - {"group": "two_one_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 658517}, - {"group": "two_one_word", "operation": "eq", "implementation": "int128", "microseconds": 97184}, - {"group": "two_one_word", "operation": "ne", "implementation": "int128", "microseconds": 98170}, - {"group": "two_one_word", "operation": "lt", "implementation": "int128", "microseconds": 114603}, - {"group": "two_one_word", "operation": "le", "implementation": "int128", "microseconds": 97205}, - {"group": "two_one_word", "operation": "gt", "implementation": "int128", "microseconds": 114679}, - {"group": "two_one_word", "operation": "ge", "implementation": "int128", "microseconds": 100322}, - {"group": "two_one_word", "operation": "comparisons", "implementation": "int128", "microseconds": 622582}, - {"group": "two_one_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 219806}, - {"group": "two_one_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 238385}, - {"group": "two_one_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 304845}, - {"group": "two_one_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 306355}, - {"group": "two_one_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 303720}, - {"group": "two_one_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 313890}, - {"group": "two_one_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 1687523}, - {"group": "two_one_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 114803}, - {"group": "two_one_word", "operation": "add", "implementation": "int128", "microseconds": 104457}, - {"group": "two_one_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1806624}, - {"group": "two_one_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 109890}, - {"group": "two_one_word", "operation": "sub", "implementation": "int128", "microseconds": 104679}, - {"group": "two_one_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1848928}, - {"group": "two_one_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 196724}, - {"group": "two_one_word", "operation": "mul", "implementation": "int128", "microseconds": 113169}, - {"group": "two_one_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 2816832}, - {"group": "two_one_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 603576}, - {"group": "two_one_word", "operation": "div", "implementation": "int128", "microseconds": 674930}, - {"group": "two_one_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 5336228}, - {"group": "two_one_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 644142}, - {"group": "two_one_word", "operation": "mod", "implementation": "int128", "microseconds": 673970}, - {"group": "two_one_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 4985368}, - {"group": "one_two_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 99479}, - {"group": "one_two_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 99015}, - {"group": "one_two_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 113526}, - {"group": "one_two_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 114889}, - {"group": "one_two_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 115012}, - {"group": "one_two_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 115202}, - {"group": "one_two_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 657561}, - {"group": "one_two_word", "operation": "eq", "implementation": "int128", "microseconds": 98572}, - {"group": "one_two_word", "operation": "ne", "implementation": "int128", "microseconds": 95348}, - {"group": "one_two_word", "operation": "lt", "implementation": "int128", "microseconds": 113729}, - {"group": "one_two_word", "operation": "le", "implementation": "int128", "microseconds": 95252}, - {"group": "one_two_word", "operation": "gt", "implementation": "int128", "microseconds": 112561}, - {"group": "one_two_word", "operation": "ge", "implementation": "int128", "microseconds": 98615}, - {"group": "one_two_word", "operation": "comparisons", "implementation": "int128", "microseconds": 614494}, - {"group": "one_two_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 221104}, - {"group": "one_two_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 240347}, - {"group": "one_two_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 305976}, - {"group": "one_two_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 304259}, - {"group": "one_two_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 303680}, - {"group": "one_two_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 317493}, - {"group": "one_two_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 1693337}, - {"group": "one_two_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 115722}, - {"group": "one_two_word", "operation": "add", "implementation": "int128", "microseconds": 108572}, - {"group": "one_two_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1797225}, - {"group": "one_two_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 108863}, - {"group": "one_two_word", "operation": "sub", "implementation": "int128", "microseconds": 104455}, - {"group": "one_two_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1848277}, - {"group": "one_two_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 197836}, - {"group": "one_two_word", "operation": "mul", "implementation": "int128", "microseconds": 112819}, - {"group": "one_two_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 2818948}, - {"group": "one_two_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 601841}, - {"group": "one_two_word", "operation": "div", "implementation": "int128", "microseconds": 675605}, - {"group": "one_two_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 5323383}, - {"group": "one_two_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 633730}, - {"group": "one_two_word", "operation": "mod", "implementation": "int128", "microseconds": 668714}, - {"group": "one_two_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 5008368}, - {"group": "random_width", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 97415}, - {"group": "random_width", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 98415}, - {"group": "random_width", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 289640}, - {"group": "random_width", "operation": "le", "implementation": "std::_Signed128", "microseconds": 290930}, - {"group": "random_width", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 290749}, - {"group": "random_width", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 293934}, - {"group": "random_width", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 1361518}, - {"group": "random_width", "operation": "eq", "implementation": "int128", "microseconds": 98375}, - {"group": "random_width", "operation": "ne", "implementation": "int128", "microseconds": 98496}, - {"group": "random_width", "operation": "lt", "implementation": "int128", "microseconds": 278763}, - {"group": "random_width", "operation": "le", "implementation": "int128", "microseconds": 259587}, - {"group": "random_width", "operation": "gt", "implementation": "int128", "microseconds": 281881}, - {"group": "random_width", "operation": "ge", "implementation": "int128", "microseconds": 253539}, - {"group": "random_width", "operation": "comparisons", "implementation": "int128", "microseconds": 1271189}, - {"group": "random_width", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 533768}, - {"group": "random_width", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 531635}, - {"group": "random_width", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 809954}, - {"group": "random_width", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 814279}, - {"group": "random_width", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 813798}, - {"group": "random_width", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 811431}, - {"group": "random_width", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 4315263}, - {"group": "random_width", "operation": "add", "implementation": "std::_Signed128", "microseconds": 115135}, - {"group": "random_width", "operation": "add", "implementation": "int128", "microseconds": 107633}, - {"group": "random_width", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 2089612}, - {"group": "random_width", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 108885}, - {"group": "random_width", "operation": "sub", "implementation": "int128", "microseconds": 105990}, - {"group": "random_width", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 2265849}, - {"group": "random_width", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 196081}, - {"group": "random_width", "operation": "mul", "implementation": "int128", "microseconds": 113761}, - {"group": "random_width", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 3024735}, - {"group": "random_width", "operation": "div", "implementation": "std::_Signed128", "microseconds": 1031262}, - {"group": "random_width", "operation": "div", "implementation": "int128", "microseconds": 1241974}, - {"group": "random_width", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 4191052}, - {"group": "random_width", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 1080810}, - {"group": "random_width", "operation": "mod", "implementation": "int128", "microseconds": 1327820}, - {"group": "random_width", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 4139305}, - {"group": "random_width", "operation": "shl", "implementation": "std::_Signed128", "microseconds": 464726}, - {"group": "random_width", "operation": "shl", "implementation": "int128", "microseconds": 103932}, - {"group": "random_width", "operation": "shl", "implementation": "boost::mp::int128", "microseconds": 2655037}, - {"group": "random_width", "operation": "shr", "implementation": "std::_Signed128", "microseconds": 473398}, - {"group": "random_width", "operation": "shr", "implementation": "int128", "microseconds": 432674}, - {"group": "random_width", "operation": "shr", "implementation": "boost::mp::int128", "microseconds": 1681082} + {"group": "two_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 91214}, + {"group": "two_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 111091}, + {"group": "two_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 110841}, + {"group": "two_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 98487}, + {"group": "two_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 101357}, + {"group": "two_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 118138}, + {"group": "two_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 631595}, + {"group": "two_word", "operation": "eq", "implementation": "int128", "microseconds": 110769}, + {"group": "two_word", "operation": "ne", "implementation": "int128", "microseconds": 109585}, + {"group": "two_word", "operation": "lt", "implementation": "int128", "microseconds": 91330}, + {"group": "two_word", "operation": "le", "implementation": "int128", "microseconds": 112874}, + {"group": "two_word", "operation": "gt", "implementation": "int128", "microseconds": 95983}, + {"group": "two_word", "operation": "ge", "implementation": "int128", "microseconds": 109518}, + {"group": "two_word", "operation": "comparisons", "implementation": "int128", "microseconds": 630546}, + {"group": "two_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 264327}, + {"group": "two_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 254895}, + {"group": "two_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 333851}, + {"group": "two_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 336083}, + {"group": "two_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 336991}, + {"group": "two_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 337135}, + {"group": "two_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 1863742}, + {"group": "two_word", "operation": "eq", "implementation": "absl::int128", "microseconds": 109708}, + {"group": "two_word", "operation": "ne", "implementation": "absl::int128", "microseconds": 112001}, + {"group": "two_word", "operation": "lt", "implementation": "absl::int128", "microseconds": 97932}, + {"group": "two_word", "operation": "le", "implementation": "absl::int128", "microseconds": 112715}, + {"group": "two_word", "operation": "gt", "implementation": "absl::int128", "microseconds": 93883}, + {"group": "two_word", "operation": "ge", "implementation": "absl::int128", "microseconds": 110842}, + {"group": "two_word", "operation": "comparisons", "implementation": "absl::int128", "microseconds": 637431}, + {"group": "two_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 100779}, + {"group": "two_word", "operation": "add", "implementation": "int128", "microseconds": 115138}, + {"group": "two_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1639208}, + {"group": "two_word", "operation": "add", "implementation": "absl::int128", "microseconds": 88985}, + {"group": "two_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 100917}, + {"group": "two_word", "operation": "sub", "implementation": "int128", "microseconds": 104743}, + {"group": "two_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 2164486}, + {"group": "two_word", "operation": "sub", "implementation": "absl::int128", "microseconds": 89467}, + {"group": "two_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 169282}, + {"group": "two_word", "operation": "mul", "implementation": "int128", "microseconds": 115031}, + {"group": "two_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 3058087}, + {"group": "two_word", "operation": "mul", "implementation": "absl::int128", "microseconds": 117479}, + {"group": "two_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 1023017}, + {"group": "two_word", "operation": "div", "implementation": "int128", "microseconds": 1178609}, + {"group": "two_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 2657898}, + {"group": "two_word", "operation": "div", "implementation": "absl::int128", "microseconds": 2257306}, + {"group": "two_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 1235024}, + {"group": "two_word", "operation": "mod", "implementation": "int128", "microseconds": 1312498}, + {"group": "two_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 3124904}, + {"group": "two_word", "operation": "mod", "implementation": "absl::int128", "microseconds": 2325482}, + {"group": "two_word", "operation": "div64", "implementation": "std::_Signed128", "microseconds": 610823}, + {"group": "two_word", "operation": "div64", "implementation": "int128", "microseconds": 610115}, + {"group": "two_word", "operation": "div64", "implementation": "boost::mp::int128", "microseconds": 10094209}, + {"group": "two_word", "operation": "div64", "implementation": "absl::int128", "microseconds": 63150944}, + {"group": "two_word", "operation": "div32", "implementation": "std::_Signed128", "microseconds": 626208}, + {"group": "two_word", "operation": "div32", "implementation": "int128", "microseconds": 612089}, + {"group": "two_word", "operation": "div32", "implementation": "boost::mp::int128", "microseconds": 3387706}, + {"group": "two_word", "operation": "div32", "implementation": "absl::int128", "microseconds": 88046752}, + {"group": "one_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 99835}, + {"group": "one_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 111163}, + {"group": "one_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 138439}, + {"group": "one_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 138399}, + {"group": "one_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 139222}, + {"group": "one_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 150043}, + {"group": "one_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 777547}, + {"group": "one_word", "operation": "eq", "implementation": "int128", "microseconds": 112277}, + {"group": "one_word", "operation": "ne", "implementation": "int128", "microseconds": 112283}, + {"group": "one_word", "operation": "lt", "implementation": "int128", "microseconds": 113761}, + {"group": "one_word", "operation": "le", "implementation": "int128", "microseconds": 121707}, + {"group": "one_word", "operation": "gt", "implementation": "int128", "microseconds": 112425}, + {"group": "one_word", "operation": "ge", "implementation": "int128", "microseconds": 112682}, + {"group": "one_word", "operation": "comparisons", "implementation": "int128", "microseconds": 685542}, + {"group": "one_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 265983}, + {"group": "one_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 259087}, + {"group": "one_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 333146}, + {"group": "one_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 333977}, + {"group": "one_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 342277}, + {"group": "one_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 335224}, + {"group": "one_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 1870058}, + {"group": "one_word", "operation": "eq", "implementation": "absl::int128", "microseconds": 110354}, + {"group": "one_word", "operation": "ne", "implementation": "absl::int128", "microseconds": 110319}, + {"group": "one_word", "operation": "lt", "implementation": "absl::int128", "microseconds": 112352}, + {"group": "one_word", "operation": "le", "implementation": "absl::int128", "microseconds": 112181}, + {"group": "one_word", "operation": "gt", "implementation": "absl::int128", "microseconds": 117376}, + {"group": "one_word", "operation": "ge", "implementation": "absl::int128", "microseconds": 112081}, + {"group": "one_word", "operation": "comparisons", "implementation": "absl::int128", "microseconds": 675001}, + {"group": "one_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 102021}, + {"group": "one_word", "operation": "add", "implementation": "int128", "microseconds": 104540}, + {"group": "one_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1745780}, + {"group": "one_word", "operation": "add", "implementation": "absl::int128", "microseconds": 114270}, + {"group": "one_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 116775}, + {"group": "one_word", "operation": "sub", "implementation": "int128", "microseconds": 113749}, + {"group": "one_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 2050478}, + {"group": "one_word", "operation": "sub", "implementation": "absl::int128", "microseconds": 94946}, + {"group": "one_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 169121}, + {"group": "one_word", "operation": "mul", "implementation": "int128", "microseconds": 112633}, + {"group": "one_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 2341855}, + {"group": "one_word", "operation": "mul", "implementation": "absl::int128", "microseconds": 115613}, + {"group": "one_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 476246}, + {"group": "one_word", "operation": "div", "implementation": "int128", "microseconds": 873528}, + {"group": "one_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 1834776}, + {"group": "one_word", "operation": "div", "implementation": "absl::int128", "microseconds": 2052849}, + {"group": "one_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 826621}, + {"group": "one_word", "operation": "mod", "implementation": "int128", "microseconds": 950098}, + {"group": "one_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 1912209}, + {"group": "one_word", "operation": "mod", "implementation": "absl::int128", "microseconds": 2127332}, + {"group": "two_one_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 92967}, + {"group": "two_one_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 110177}, + {"group": "two_one_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 107378}, + {"group": "two_one_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 98342}, + {"group": "two_one_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 98175}, + {"group": "two_one_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 113064}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 620544}, + {"group": "two_one_word", "operation": "eq", "implementation": "int128", "microseconds": 111613}, + {"group": "two_one_word", "operation": "ne", "implementation": "int128", "microseconds": 111264}, + {"group": "two_one_word", "operation": "lt", "implementation": "int128", "microseconds": 93008}, + {"group": "two_one_word", "operation": "le", "implementation": "int128", "microseconds": 109888}, + {"group": "two_one_word", "operation": "gt", "implementation": "int128", "microseconds": 93020}, + {"group": "two_one_word", "operation": "ge", "implementation": "int128", "microseconds": 111197}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "int128", "microseconds": 630486}, + {"group": "two_one_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 220697}, + {"group": "two_one_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 238576}, + {"group": "two_one_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 293735}, + {"group": "two_one_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 292186}, + {"group": "two_one_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 294153}, + {"group": "two_one_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 292695}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 1632491}, + {"group": "two_one_word", "operation": "eq", "implementation": "absl::int128", "microseconds": 110052}, + {"group": "two_one_word", "operation": "ne", "implementation": "absl::int128", "microseconds": 109991}, + {"group": "two_one_word", "operation": "lt", "implementation": "absl::int128", "microseconds": 93773}, + {"group": "two_one_word", "operation": "le", "implementation": "absl::int128", "microseconds": 110336}, + {"group": "two_one_word", "operation": "gt", "implementation": "absl::int128", "microseconds": 94304}, + {"group": "two_one_word", "operation": "ge", "implementation": "absl::int128", "microseconds": 110167}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "absl::int128", "microseconds": 629043}, + {"group": "two_one_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 101566}, + {"group": "two_one_word", "operation": "add", "implementation": "int128", "microseconds": 102481}, + {"group": "two_one_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1846343}, + {"group": "two_one_word", "operation": "add", "implementation": "absl::int128", "microseconds": 90141}, + {"group": "two_one_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 102540}, + {"group": "two_one_word", "operation": "sub", "implementation": "int128", "microseconds": 101878}, + {"group": "two_one_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1915851}, + {"group": "two_one_word", "operation": "sub", "implementation": "absl::int128", "microseconds": 87637}, + {"group": "two_one_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 169713}, + {"group": "two_one_word", "operation": "mul", "implementation": "int128", "microseconds": 108800}, + {"group": "two_one_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 2861246}, + {"group": "two_one_word", "operation": "mul", "implementation": "absl::int128", "microseconds": 121323}, + {"group": "two_one_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 516511}, + {"group": "two_one_word", "operation": "div", "implementation": "int128", "microseconds": 687120}, + {"group": "two_one_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 5485790}, + {"group": "two_one_word", "operation": "div", "implementation": "absl::int128", "microseconds": 32123304}, + {"group": "two_one_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 640552}, + {"group": "two_one_word", "operation": "mod", "implementation": "int128", "microseconds": 665867}, + {"group": "two_one_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 5066758}, + {"group": "two_one_word", "operation": "mod", "implementation": "absl::int128", "microseconds": 32127540}, + {"group": "one_two_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 94479}, + {"group": "one_two_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 111340}, + {"group": "one_two_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 112647}, + {"group": "one_two_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 105523}, + {"group": "one_two_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 101341}, + {"group": "one_two_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 113953}, + {"group": "one_two_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 639749}, + {"group": "one_two_word", "operation": "eq", "implementation": "int128", "microseconds": 113107}, + {"group": "one_two_word", "operation": "ne", "implementation": "int128", "microseconds": 113965}, + {"group": "one_two_word", "operation": "lt", "implementation": "int128", "microseconds": 98624}, + {"group": "one_two_word", "operation": "le", "implementation": "int128", "microseconds": 113790}, + {"group": "one_two_word", "operation": "gt", "implementation": "int128", "microseconds": 93812}, + {"group": "one_two_word", "operation": "ge", "implementation": "int128", "microseconds": 111428}, + {"group": "one_two_word", "operation": "comparisons", "implementation": "int128", "microseconds": 645180}, + {"group": "one_two_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 226913}, + {"group": "one_two_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 241039}, + {"group": "one_two_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 295190}, + {"group": "one_two_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 293891}, + {"group": "one_two_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 307585}, + {"group": "one_two_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 294427}, + {"group": "one_two_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 1659455}, + {"group": "one_two_word", "operation": "eq", "implementation": "absl::int128", "microseconds": 113323}, + {"group": "one_two_word", "operation": "ne", "implementation": "absl::int128", "microseconds": 111983}, + {"group": "one_two_word", "operation": "lt", "implementation": "absl::int128", "microseconds": 95198}, + {"group": "one_two_word", "operation": "le", "implementation": "absl::int128", "microseconds": 113807}, + {"group": "one_two_word", "operation": "gt", "implementation": "absl::int128", "microseconds": 94507}, + {"group": "one_two_word", "operation": "ge", "implementation": "absl::int128", "microseconds": 113257}, + {"group": "one_two_word", "operation": "comparisons", "implementation": "absl::int128", "microseconds": 642525}, + {"group": "one_two_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 104748}, + {"group": "one_two_word", "operation": "add", "implementation": "int128", "microseconds": 108422}, + {"group": "one_two_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1852801}, + {"group": "one_two_word", "operation": "add", "implementation": "absl::int128", "microseconds": 91408}, + {"group": "one_two_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 103253}, + {"group": "one_two_word", "operation": "sub", "implementation": "int128", "microseconds": 104510}, + {"group": "one_two_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1920954}, + {"group": "one_two_word", "operation": "sub", "implementation": "absl::int128", "microseconds": 90374}, + {"group": "one_two_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 169236}, + {"group": "one_two_word", "operation": "mul", "implementation": "int128", "microseconds": 113873}, + {"group": "one_two_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 2817457}, + {"group": "one_two_word", "operation": "mul", "implementation": "absl::int128", "microseconds": 116206}, + {"group": "one_two_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 522829}, + {"group": "one_two_word", "operation": "div", "implementation": "int128", "microseconds": 673470}, + {"group": "one_two_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 5388192}, + {"group": "one_two_word", "operation": "div", "implementation": "absl::int128", "microseconds": 31894174}, + {"group": "one_two_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 634471}, + {"group": "one_two_word", "operation": "mod", "implementation": "int128", "microseconds": 718097}, + {"group": "one_two_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 5297855}, + {"group": "one_two_word", "operation": "mod", "implementation": "absl::int128", "microseconds": 32132952}, + {"group": "random_width", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 92477}, + {"group": "random_width", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 120585}, + {"group": "random_width", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 269379}, + {"group": "random_width", "operation": "le", "implementation": "std::_Signed128", "microseconds": 271297}, + {"group": "random_width", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 269641}, + {"group": "random_width", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 289618}, + {"group": "random_width", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 1313422}, + {"group": "random_width", "operation": "eq", "implementation": "int128", "microseconds": 112157}, + {"group": "random_width", "operation": "ne", "implementation": "int128", "microseconds": 110859}, + {"group": "random_width", "operation": "lt", "implementation": "int128", "microseconds": 261722}, + {"group": "random_width", "operation": "le", "implementation": "int128", "microseconds": 284749}, + {"group": "random_width", "operation": "gt", "implementation": "int128", "microseconds": 252883}, + {"group": "random_width", "operation": "ge", "implementation": "int128", "microseconds": 278271}, + {"group": "random_width", "operation": "comparisons", "implementation": "int128", "microseconds": 1301134}, + {"group": "random_width", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 526978}, + {"group": "random_width", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 541363}, + {"group": "random_width", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 781350}, + {"group": "random_width", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 794099}, + {"group": "random_width", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 793040}, + {"group": "random_width", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 781881}, + {"group": "random_width", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 4219069}, + {"group": "random_width", "operation": "eq", "implementation": "absl::int128", "microseconds": 111499}, + {"group": "random_width", "operation": "ne", "implementation": "absl::int128", "microseconds": 110890}, + {"group": "random_width", "operation": "lt", "implementation": "absl::int128", "microseconds": 262252}, + {"group": "random_width", "operation": "le", "implementation": "absl::int128", "microseconds": 292272}, + {"group": "random_width", "operation": "gt", "implementation": "absl::int128", "microseconds": 251224}, + {"group": "random_width", "operation": "ge", "implementation": "absl::int128", "microseconds": 282013}, + {"group": "random_width", "operation": "comparisons", "implementation": "absl::int128", "microseconds": 1310527}, + {"group": "random_width", "operation": "add", "implementation": "std::_Signed128", "microseconds": 104308}, + {"group": "random_width", "operation": "add", "implementation": "int128", "microseconds": 105315}, + {"group": "random_width", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 2122367}, + {"group": "random_width", "operation": "add", "implementation": "absl::int128", "microseconds": 92929}, + {"group": "random_width", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 101850}, + {"group": "random_width", "operation": "sub", "implementation": "int128", "microseconds": 100240}, + {"group": "random_width", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 2328494}, + {"group": "random_width", "operation": "sub", "implementation": "absl::int128", "microseconds": 93068}, + {"group": "random_width", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 167872}, + {"group": "random_width", "operation": "mul", "implementation": "int128", "microseconds": 112184}, + {"group": "random_width", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 3004661}, + {"group": "random_width", "operation": "mul", "implementation": "absl::int128", "microseconds": 114658}, + {"group": "random_width", "operation": "div", "implementation": "std::_Signed128", "microseconds": 938908}, + {"group": "random_width", "operation": "div", "implementation": "int128", "microseconds": 1233042}, + {"group": "random_width", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 4238571}, + {"group": "random_width", "operation": "div", "implementation": "absl::int128", "microseconds": 17581284}, + {"group": "random_width", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 1101512}, + {"group": "random_width", "operation": "mod", "implementation": "int128", "microseconds": 1330229}, + {"group": "random_width", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 4187828}, + {"group": "random_width", "operation": "mod", "implementation": "absl::int128", "microseconds": 17626117}, + {"group": "random_width", "operation": "shl", "implementation": "std::_Signed128", "microseconds": 471211}, + {"group": "random_width", "operation": "shl", "implementation": "int128", "microseconds": 95566}, + {"group": "random_width", "operation": "shl", "implementation": "boost::mp::int128", "microseconds": 2742634}, + {"group": "random_width", "operation": "shl", "implementation": "absl::int128", "microseconds": 459488}, + {"group": "random_width", "operation": "shr", "implementation": "std::_Signed128", "microseconds": 488553}, + {"group": "random_width", "operation": "shr", "implementation": "int128", "microseconds": 438343}, + {"group": "random_width", "operation": "shr", "implementation": "boost::mp::int128", "microseconds": 1723762}, + {"group": "random_width", "operation": "shr", "implementation": "absl::int128", "microseconds": 554984} ] } diff --git a/doc/modules/ROOT/data/benchmarks-windows-x64/u128.json b/doc/modules/ROOT/data/benchmarks-windows-x64/u128.json index c5e1d9be..3b641f29 100644 --- a/doc/modules/ROOT/data/benchmarks-windows-x64/u128.json +++ b/doc/modules/ROOT/data/benchmarks-windows-x64/u128.json @@ -9,208 +9,267 @@ "elements": 20000000, "repetitions": 5, "baseline": "std::_Unsigned128", - "implementations": ["std::_Unsigned128", "uint128", "boost::mp::uint128"], + "implementations": ["std::_Unsigned128", "uint128", "boost::mp::uint128", "absl::uint128"], "results": [ - {"group": "two_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 99690}, - {"group": "two_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 116143}, - {"group": "two_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 101643}, - {"group": "two_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 115718}, - {"group": "two_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 106317}, - {"group": "two_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 114639}, - {"group": "two_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 654754}, - {"group": "two_word", "operation": "eq", "implementation": "uint128", "microseconds": 114310}, - {"group": "two_word", "operation": "ne", "implementation": "uint128", "microseconds": 114871}, - {"group": "two_word", "operation": "lt", "implementation": "uint128", "microseconds": 97782}, - {"group": "two_word", "operation": "le", "implementation": "uint128", "microseconds": 104084}, - {"group": "two_word", "operation": "gt", "implementation": "uint128", "microseconds": 98415}, - {"group": "two_word", "operation": "ge", "implementation": "uint128", "microseconds": 114000}, - {"group": "two_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 643878}, - {"group": "two_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 200390}, - {"group": "two_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 181371}, - {"group": "two_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 214257}, - {"group": "two_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 214424}, - {"group": "two_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 215604}, - {"group": "two_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 191635}, - {"group": "two_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 1218167}, - {"group": "two_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 108441}, - {"group": "two_word", "operation": "add", "implementation": "uint128", "microseconds": 102224}, - {"group": "two_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 1441775}, - {"group": "two_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 114883}, - {"group": "two_word", "operation": "sub", "implementation": "uint128", "microseconds": 95112}, - {"group": "two_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 1634898}, - {"group": "two_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 117160}, - {"group": "two_word", "operation": "mul", "implementation": "uint128", "microseconds": 114334}, - {"group": "two_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 2957779}, - {"group": "two_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 1220856}, - {"group": "two_word", "operation": "div", "implementation": "uint128", "microseconds": 1062009}, - {"group": "two_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 2412835}, - {"group": "two_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 1275215}, - {"group": "two_word", "operation": "mod", "implementation": "uint128", "microseconds": 1211307}, - {"group": "two_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 2383395}, - {"group": "two_word", "operation": "div64", "implementation": "std::_Unsigned128", "microseconds": 611657}, - {"group": "two_word", "operation": "div64", "implementation": "uint128", "microseconds": 614509}, - {"group": "two_word", "operation": "div64", "implementation": "boost::mp::uint128", "microseconds": 9023185}, - {"group": "two_word", "operation": "div32", "implementation": "std::_Unsigned128", "microseconds": 614595}, - {"group": "two_word", "operation": "div32", "implementation": "uint128", "microseconds": 610867}, - {"group": "two_word", "operation": "div32", "implementation": "boost::mp::uint128", "microseconds": 3017187}, - {"group": "one_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 97504}, - {"group": "one_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 114033}, - {"group": "one_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 117999}, - {"group": "one_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 119909}, - {"group": "one_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 121589}, - {"group": "one_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 123625}, - {"group": "one_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 695180}, - {"group": "one_word", "operation": "eq", "implementation": "uint128", "microseconds": 124444}, - {"group": "one_word", "operation": "ne", "implementation": "uint128", "microseconds": 141853}, - {"group": "one_word", "operation": "lt", "implementation": "uint128", "microseconds": 126322}, - {"group": "one_word", "operation": "le", "implementation": "uint128", "microseconds": 119953}, - {"group": "one_word", "operation": "gt", "implementation": "uint128", "microseconds": 111180}, - {"group": "one_word", "operation": "ge", "implementation": "uint128", "microseconds": 109911}, - {"group": "one_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 734137}, - {"group": "one_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 188909}, - {"group": "one_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 179914}, - {"group": "one_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 215960}, - {"group": "one_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 213735}, - {"group": "one_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 212586}, - {"group": "one_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 188648}, - {"group": "one_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 1200219}, - {"group": "one_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 107074}, - {"group": "one_word", "operation": "add", "implementation": "uint128", "microseconds": 100304}, - {"group": "one_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 1267610}, - {"group": "one_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 115493}, - {"group": "one_word", "operation": "sub", "implementation": "uint128", "microseconds": 94631}, - {"group": "one_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 1565102}, - {"group": "one_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 114100}, - {"group": "one_word", "operation": "mul", "implementation": "uint128", "microseconds": 112700}, - {"group": "one_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 1785347}, - {"group": "one_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 416742}, - {"group": "one_word", "operation": "div", "implementation": "uint128", "microseconds": 730582}, - {"group": "one_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 1593038}, - {"group": "one_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 860796}, - {"group": "one_word", "operation": "mod", "implementation": "uint128", "microseconds": 811574}, - {"group": "one_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 1598772}, - {"group": "two_one_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 98028}, - {"group": "two_one_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 113216}, - {"group": "two_one_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 100272}, - {"group": "two_one_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 116688}, - {"group": "two_one_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 106586}, - {"group": "two_one_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 116835}, - {"group": "two_one_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 652029}, - {"group": "two_one_word", "operation": "eq", "implementation": "uint128", "microseconds": 117223}, - {"group": "two_one_word", "operation": "ne", "implementation": "uint128", "microseconds": 114823}, - {"group": "two_one_word", "operation": "lt", "implementation": "uint128", "microseconds": 101384}, - {"group": "two_one_word", "operation": "le", "implementation": "uint128", "microseconds": 99924}, - {"group": "two_one_word", "operation": "gt", "implementation": "uint128", "microseconds": 98469}, - {"group": "two_one_word", "operation": "ge", "implementation": "uint128", "microseconds": 115111}, - {"group": "two_one_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 647378}, - {"group": "two_one_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 164198}, - {"group": "two_one_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 164490}, - {"group": "two_one_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 162760}, - {"group": "two_one_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 164844}, - {"group": "two_one_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 165327}, - {"group": "two_one_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 163970}, - {"group": "two_one_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 985944}, - {"group": "two_one_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 107315}, - {"group": "two_one_word", "operation": "add", "implementation": "uint128", "microseconds": 101098}, - {"group": "two_one_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 1440567}, - {"group": "two_one_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 118363}, - {"group": "two_one_word", "operation": "sub", "implementation": "uint128", "microseconds": 101239}, - {"group": "two_one_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 1566603}, - {"group": "two_one_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 113629}, - {"group": "two_one_word", "operation": "mul", "implementation": "uint128", "microseconds": 115814}, - {"group": "two_one_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 2490772}, - {"group": "two_one_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 474242}, - {"group": "two_one_word", "operation": "div", "implementation": "uint128", "microseconds": 377992}, - {"group": "two_one_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 4892882}, - {"group": "two_one_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 458773}, - {"group": "two_one_word", "operation": "mod", "implementation": "uint128", "microseconds": 473292}, - {"group": "two_one_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 4712981}, - {"group": "one_two_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 93991}, - {"group": "one_two_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 112260}, - {"group": "one_two_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 96608}, - {"group": "one_two_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 114829}, - {"group": "one_two_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 108021}, - {"group": "one_two_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 116539}, - {"group": "one_two_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 642780}, - {"group": "one_two_word", "operation": "eq", "implementation": "uint128", "microseconds": 113310}, - {"group": "one_two_word", "operation": "ne", "implementation": "uint128", "microseconds": 113050}, - {"group": "one_two_word", "operation": "lt", "implementation": "uint128", "microseconds": 99388}, - {"group": "one_two_word", "operation": "le", "implementation": "uint128", "microseconds": 95552}, - {"group": "one_two_word", "operation": "gt", "implementation": "uint128", "microseconds": 95532}, - {"group": "one_two_word", "operation": "ge", "implementation": "uint128", "microseconds": 112019}, - {"group": "one_two_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 629316}, - {"group": "one_two_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 162343}, - {"group": "one_two_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 162758}, - {"group": "one_two_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 166459}, - {"group": "one_two_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 167110}, - {"group": "one_two_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 167239}, - {"group": "one_two_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 166512}, - {"group": "one_two_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 992864}, - {"group": "one_two_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 106720}, - {"group": "one_two_word", "operation": "add", "implementation": "uint128", "microseconds": 101810}, - {"group": "one_two_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 1447051}, - {"group": "one_two_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 115651}, - {"group": "one_two_word", "operation": "sub", "implementation": "uint128", "microseconds": 96136}, - {"group": "one_two_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 1562580}, - {"group": "one_two_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 112725}, - {"group": "one_two_word", "operation": "mul", "implementation": "uint128", "microseconds": 113279}, - {"group": "one_two_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 2486513}, - {"group": "one_two_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 472632}, - {"group": "one_two_word", "operation": "div", "implementation": "uint128", "microseconds": 380700}, - {"group": "one_two_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 4898100}, - {"group": "one_two_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 456450}, - {"group": "one_two_word", "operation": "mod", "implementation": "uint128", "microseconds": 466555}, - {"group": "one_two_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 4735558}, - {"group": "random_width", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 95539}, - {"group": "random_width", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 113057}, - {"group": "random_width", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 261262}, - {"group": "random_width", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 288151}, - {"group": "random_width", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 272217}, - {"group": "random_width", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 282306}, - {"group": "random_width", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 1313048}, - {"group": "random_width", "operation": "eq", "implementation": "uint128", "microseconds": 119725}, - {"group": "random_width", "operation": "ne", "implementation": "uint128", "microseconds": 117316}, - {"group": "random_width", "operation": "lt", "implementation": "uint128", "microseconds": 253233}, - {"group": "random_width", "operation": "le", "implementation": "uint128", "microseconds": 244748}, - {"group": "random_width", "operation": "gt", "implementation": "uint128", "microseconds": 246018}, - {"group": "random_width", "operation": "ge", "implementation": "uint128", "microseconds": 270250}, - {"group": "random_width", "operation": "comparisons", "implementation": "uint128", "microseconds": 1251724}, - {"group": "random_width", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 315630}, - {"group": "random_width", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 311524}, - {"group": "random_width", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 337312}, - {"group": "random_width", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 336266}, - {"group": "random_width", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 335893}, - {"group": "random_width", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 333129}, - {"group": "random_width", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 1970110}, - {"group": "random_width", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 106229}, - {"group": "random_width", "operation": "add", "implementation": "uint128", "microseconds": 98075}, - {"group": "random_width", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 2153287}, - {"group": "random_width", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 115275}, - {"group": "random_width", "operation": "sub", "implementation": "uint128", "microseconds": 97252}, - {"group": "random_width", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 2318242}, - {"group": "random_width", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 115091}, - {"group": "random_width", "operation": "mul", "implementation": "uint128", "microseconds": 112082}, - {"group": "random_width", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 2428936}, - {"group": "random_width", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 1127057}, - {"group": "random_width", "operation": "div", "implementation": "uint128", "microseconds": 1086078}, - {"group": "random_width", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 3340168}, - {"group": "random_width", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 1249176}, - {"group": "random_width", "operation": "mod", "implementation": "uint128", "microseconds": 1144617}, - {"group": "random_width", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 2721519}, - {"group": "random_width", "operation": "shl", "implementation": "std::_Unsigned128", "microseconds": 459629}, - {"group": "random_width", "operation": "shl", "implementation": "uint128", "microseconds": 450805}, - {"group": "random_width", "operation": "shl", "implementation": "boost::mp::uint128", "microseconds": 2786841}, - {"group": "random_width", "operation": "shr", "implementation": "std::_Unsigned128", "microseconds": 448761}, - {"group": "random_width", "operation": "shr", "implementation": "uint128", "microseconds": 487842}, - {"group": "random_width", "operation": "shr", "implementation": "boost::mp::uint128", "microseconds": 1561214}, - {"group": "random_width", "operation": "and", "implementation": "std::_Unsigned128", "microseconds": 93016}, - {"group": "random_width", "operation": "and", "implementation": "uint128", "microseconds": 92138}, - {"group": "random_width", "operation": "and", "implementation": "boost::mp::uint128", "microseconds": 1743660}, - {"group": "random_width", "operation": "or", "implementation": "std::_Unsigned128", "microseconds": 95635}, - {"group": "random_width", "operation": "or", "implementation": "uint128", "microseconds": 91902}, - {"group": "random_width", "operation": "or", "implementation": "boost::mp::uint128", "microseconds": 1567903}, - {"group": "random_width", "operation": "xor", "implementation": "std::_Unsigned128", "microseconds": 89233}, - {"group": "random_width", "operation": "xor", "implementation": "uint128", "microseconds": 87982}, - {"group": "random_width", "operation": "xor", "implementation": "boost::mp::uint128", "microseconds": 1588266} + {"group": "two_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 94205}, + {"group": "two_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 92688}, + {"group": "two_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 111985}, + {"group": "two_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 110803}, + {"group": "two_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 112161}, + {"group": "two_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 112117}, + {"group": "two_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 634507}, + {"group": "two_word", "operation": "eq", "implementation": "uint128", "microseconds": 92182}, + {"group": "two_word", "operation": "ne", "implementation": "uint128", "microseconds": 91828}, + {"group": "two_word", "operation": "lt", "implementation": "uint128", "microseconds": 110803}, + {"group": "two_word", "operation": "le", "implementation": "uint128", "microseconds": 94236}, + {"group": "two_word", "operation": "gt", "implementation": "uint128", "microseconds": 93882}, + {"group": "two_word", "operation": "ge", "implementation": "uint128", "microseconds": 92178}, + {"group": "two_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 575486}, + {"group": "two_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 175032}, + {"group": "two_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 185204}, + {"group": "two_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 200316}, + {"group": "two_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 185561}, + {"group": "two_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 184678}, + {"group": "two_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 221159}, + {"group": "two_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 1152383}, + {"group": "two_word", "operation": "eq", "implementation": "absl::uint128", "microseconds": 92288}, + {"group": "two_word", "operation": "ne", "implementation": "absl::uint128", "microseconds": 92499}, + {"group": "two_word", "operation": "lt", "implementation": "absl::uint128", "microseconds": 91514}, + {"group": "two_word", "operation": "le", "implementation": "absl::uint128", "microseconds": 91999}, + {"group": "two_word", "operation": "gt", "implementation": "absl::uint128", "microseconds": 109853}, + {"group": "two_word", "operation": "ge", "implementation": "absl::uint128", "microseconds": 91553}, + {"group": "two_word", "operation": "comparisons", "implementation": "absl::uint128", "microseconds": 570155}, + {"group": "two_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 102191}, + {"group": "two_word", "operation": "add", "implementation": "uint128", "microseconds": 97564}, + {"group": "two_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 1445281}, + {"group": "two_word", "operation": "add", "implementation": "absl::uint128", "microseconds": 91567}, + {"group": "two_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 112196}, + {"group": "two_word", "operation": "sub", "implementation": "uint128", "microseconds": 94987}, + {"group": "two_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 1689960}, + {"group": "two_word", "operation": "sub", "implementation": "absl::uint128", "microseconds": 91305}, + {"group": "two_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 111680}, + {"group": "two_word", "operation": "mul", "implementation": "uint128", "microseconds": 118151}, + {"group": "two_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 2759720}, + {"group": "two_word", "operation": "mul", "implementation": "absl::uint128", "microseconds": 109564}, + {"group": "two_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 1217710}, + {"group": "two_word", "operation": "div", "implementation": "uint128", "microseconds": 1088033}, + {"group": "two_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 2419194}, + {"group": "two_word", "operation": "div", "implementation": "absl::uint128", "microseconds": 2335362}, + {"group": "two_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 1272125}, + {"group": "two_word", "operation": "mod", "implementation": "uint128", "microseconds": 1197114}, + {"group": "two_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 2451207}, + {"group": "two_word", "operation": "mod", "implementation": "absl::uint128", "microseconds": 2335817}, + {"group": "two_word", "operation": "div64", "implementation": "std::_Unsigned128", "microseconds": 611083}, + {"group": "two_word", "operation": "div64", "implementation": "uint128", "microseconds": 617975}, + {"group": "two_word", "operation": "div64", "implementation": "boost::mp::uint128", "microseconds": 9279290}, + {"group": "two_word", "operation": "div64", "implementation": "absl::uint128", "microseconds": 65309051}, + {"group": "two_word", "operation": "div32", "implementation": "std::_Unsigned128", "microseconds": 623692}, + {"group": "two_word", "operation": "div32", "implementation": "uint128", "microseconds": 620884}, + {"group": "two_word", "operation": "div32", "implementation": "boost::mp::uint128", "microseconds": 3050297}, + {"group": "two_word", "operation": "div32", "implementation": "absl::uint128", "microseconds": 89543447}, + {"group": "one_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 95705}, + {"group": "one_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 92597}, + {"group": "one_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 139055}, + {"group": "one_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 143041}, + {"group": "one_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 138398}, + {"group": "one_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 139955}, + {"group": "one_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 749236}, + {"group": "one_word", "operation": "eq", "implementation": "uint128", "microseconds": 91684}, + {"group": "one_word", "operation": "ne", "implementation": "uint128", "microseconds": 92702}, + {"group": "one_word", "operation": "lt", "implementation": "uint128", "microseconds": 102040}, + {"group": "one_word", "operation": "le", "implementation": "uint128", "microseconds": 101581}, + {"group": "one_word", "operation": "gt", "implementation": "uint128", "microseconds": 99849}, + {"group": "one_word", "operation": "ge", "implementation": "uint128", "microseconds": 102542}, + {"group": "one_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 590891}, + {"group": "one_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 175198}, + {"group": "one_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 181525}, + {"group": "one_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 195217}, + {"group": "one_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 188775}, + {"group": "one_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 184942}, + {"group": "one_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 200436}, + {"group": "one_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 1126482}, + {"group": "one_word", "operation": "eq", "implementation": "absl::uint128", "microseconds": 91225}, + {"group": "one_word", "operation": "ne", "implementation": "absl::uint128", "microseconds": 92581}, + {"group": "one_word", "operation": "lt", "implementation": "absl::uint128", "microseconds": 100273}, + {"group": "one_word", "operation": "le", "implementation": "absl::uint128", "microseconds": 101031}, + {"group": "one_word", "operation": "gt", "implementation": "absl::uint128", "microseconds": 103587}, + {"group": "one_word", "operation": "ge", "implementation": "absl::uint128", "microseconds": 102906}, + {"group": "one_word", "operation": "comparisons", "implementation": "absl::uint128", "microseconds": 592001}, + {"group": "one_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 101524}, + {"group": "one_word", "operation": "add", "implementation": "uint128", "microseconds": 92108}, + {"group": "one_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 1261530}, + {"group": "one_word", "operation": "add", "implementation": "absl::uint128", "microseconds": 90760}, + {"group": "one_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 112459}, + {"group": "one_word", "operation": "sub", "implementation": "uint128", "microseconds": 90501}, + {"group": "one_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 1626410}, + {"group": "one_word", "operation": "sub", "implementation": "absl::uint128", "microseconds": 93929}, + {"group": "one_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 110352}, + {"group": "one_word", "operation": "mul", "implementation": "uint128", "microseconds": 110759}, + {"group": "one_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 1681516}, + {"group": "one_word", "operation": "mul", "implementation": "absl::uint128", "microseconds": 111934}, + {"group": "one_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 485135}, + {"group": "one_word", "operation": "div", "implementation": "uint128", "microseconds": 741219}, + {"group": "one_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 1577618}, + {"group": "one_word", "operation": "div", "implementation": "absl::uint128", "microseconds": 2104387}, + {"group": "one_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 870497}, + {"group": "one_word", "operation": "mod", "implementation": "uint128", "microseconds": 808677}, + {"group": "one_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 1608795}, + {"group": "two_one_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 92765}, + {"group": "two_one_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 93418}, + {"group": "two_one_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 111535}, + {"group": "two_one_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 109934}, + {"group": "two_one_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 119815}, + {"group": "two_one_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 111207}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 639050}, + {"group": "two_one_word", "operation": "eq", "implementation": "uint128", "microseconds": 92965}, + {"group": "two_one_word", "operation": "ne", "implementation": "uint128", "microseconds": 93273}, + {"group": "two_one_word", "operation": "lt", "implementation": "uint128", "microseconds": 110979}, + {"group": "two_one_word", "operation": "le", "implementation": "uint128", "microseconds": 93606}, + {"group": "two_one_word", "operation": "gt", "implementation": "uint128", "microseconds": 93434}, + {"group": "two_one_word", "operation": "ge", "implementation": "uint128", "microseconds": 92513}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 577215}, + {"group": "two_one_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 161906}, + {"group": "two_one_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 160607}, + {"group": "two_one_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 156830}, + {"group": "two_one_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 154984}, + {"group": "two_one_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 155865}, + {"group": "two_one_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 161546}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 952175}, + {"group": "two_one_word", "operation": "eq", "implementation": "absl::uint128", "microseconds": 92626}, + {"group": "two_one_word", "operation": "ne", "implementation": "absl::uint128", "microseconds": 93640}, + {"group": "two_one_word", "operation": "lt", "implementation": "absl::uint128", "microseconds": 92776}, + {"group": "two_one_word", "operation": "le", "implementation": "absl::uint128", "microseconds": 97914}, + {"group": "two_one_word", "operation": "gt", "implementation": "absl::uint128", "microseconds": 112350}, + {"group": "two_one_word", "operation": "ge", "implementation": "absl::uint128", "microseconds": 92871}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "absl::uint128", "microseconds": 582608}, + {"group": "two_one_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 103960}, + {"group": "two_one_word", "operation": "add", "implementation": "uint128", "microseconds": 93848}, + {"group": "two_one_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 1455609}, + {"group": "two_one_word", "operation": "add", "implementation": "absl::uint128", "microseconds": 92964}, + {"group": "two_one_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 118960}, + {"group": "two_one_word", "operation": "sub", "implementation": "uint128", "microseconds": 90638}, + {"group": "two_one_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 1572963}, + {"group": "two_one_word", "operation": "sub", "implementation": "absl::uint128", "microseconds": 92175}, + {"group": "two_one_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 111037}, + {"group": "two_one_word", "operation": "mul", "implementation": "uint128", "microseconds": 108674}, + {"group": "two_one_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 2295222}, + {"group": "two_one_word", "operation": "mul", "implementation": "absl::uint128", "microseconds": 109071}, + {"group": "two_one_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 471184}, + {"group": "two_one_word", "operation": "div", "implementation": "uint128", "microseconds": 382689}, + {"group": "two_one_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 5149029}, + {"group": "two_one_word", "operation": "div", "implementation": "absl::uint128", "microseconds": 32716648}, + {"group": "two_one_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 521437}, + {"group": "two_one_word", "operation": "mod", "implementation": "uint128", "microseconds": 425549}, + {"group": "two_one_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 4874652}, + {"group": "two_one_word", "operation": "mod", "implementation": "absl::uint128", "microseconds": 33128709}, + {"group": "one_two_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 109085}, + {"group": "one_two_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 108416}, + {"group": "one_two_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 140089}, + {"group": "one_two_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 122390}, + {"group": "one_two_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 122828}, + {"group": "one_two_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 125039}, + {"group": "one_two_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 728277}, + {"group": "one_two_word", "operation": "eq", "implementation": "uint128", "microseconds": 96771}, + {"group": "one_two_word", "operation": "ne", "implementation": "uint128", "microseconds": 97033}, + {"group": "one_two_word", "operation": "lt", "implementation": "uint128", "microseconds": 112699}, + {"group": "one_two_word", "operation": "le", "implementation": "uint128", "microseconds": 96165}, + {"group": "one_two_word", "operation": "gt", "implementation": "uint128", "microseconds": 102032}, + {"group": "one_two_word", "operation": "ge", "implementation": "uint128", "microseconds": 92392}, + {"group": "one_two_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 597560}, + {"group": "one_two_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 158546}, + {"group": "one_two_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 161833}, + {"group": "one_two_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 219545}, + {"group": "one_two_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 257607}, + {"group": "one_two_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 221425}, + {"group": "one_two_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 189421}, + {"group": "one_two_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 1208812}, + {"group": "one_two_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 127977}, + {"group": "one_two_word", "operation": "add", "implementation": "uint128", "microseconds": 107239}, + {"group": "one_two_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 1620761}, + {"group": "one_two_word", "operation": "add", "implementation": "absl::uint128", "microseconds": 93820}, + {"group": "one_two_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 113357}, + {"group": "one_two_word", "operation": "sub", "implementation": "uint128", "microseconds": 98043}, + {"group": "one_two_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 1672690}, + {"group": "one_two_word", "operation": "sub", "implementation": "absl::uint128", "microseconds": 98057}, + {"group": "one_two_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 110811}, + {"group": "one_two_word", "operation": "mul", "implementation": "uint128", "microseconds": 110912}, + {"group": "one_two_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 2472029}, + {"group": "one_two_word", "operation": "mul", "implementation": "absl::uint128", "microseconds": 115844}, + {"group": "one_two_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 489733}, + {"group": "one_two_word", "operation": "div", "implementation": "uint128", "microseconds": 402599}, + {"group": "one_two_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 5253503}, + {"group": "one_two_word", "operation": "div", "implementation": "absl::uint128", "microseconds": 33229088}, + {"group": "one_two_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 573736}, + {"group": "one_two_word", "operation": "mod", "implementation": "uint128", "microseconds": 509727}, + {"group": "one_two_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 5297398}, + {"group": "one_two_word", "operation": "mod", "implementation": "absl::uint128", "microseconds": 33603690}, + {"group": "random_width", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 90623}, + {"group": "random_width", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 91439}, + {"group": "random_width", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 298812}, + {"group": "random_width", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 287410}, + {"group": "random_width", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 291821}, + {"group": "random_width", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 291350}, + {"group": "random_width", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 1351853}, + {"group": "random_width", "operation": "eq", "implementation": "uint128", "microseconds": 96534}, + {"group": "random_width", "operation": "ne", "implementation": "uint128", "microseconds": 95377}, + {"group": "random_width", "operation": "lt", "implementation": "uint128", "microseconds": 269659}, + {"group": "random_width", "operation": "le", "implementation": "uint128", "microseconds": 256069}, + {"group": "random_width", "operation": "gt", "implementation": "uint128", "microseconds": 246092}, + {"group": "random_width", "operation": "ge", "implementation": "uint128", "microseconds": 245898}, + {"group": "random_width", "operation": "comparisons", "implementation": "uint128", "microseconds": 1210126}, + {"group": "random_width", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 309794}, + {"group": "random_width", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 324386}, + {"group": "random_width", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 334137}, + {"group": "random_width", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 329555}, + {"group": "random_width", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 325951}, + {"group": "random_width", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 328848}, + {"group": "random_width", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 1953037}, + {"group": "random_width", "operation": "eq", "implementation": "absl::uint128", "microseconds": 91624}, + {"group": "random_width", "operation": "ne", "implementation": "absl::uint128", "microseconds": 90978}, + {"group": "random_width", "operation": "lt", "implementation": "absl::uint128", "microseconds": 244935}, + {"group": "random_width", "operation": "le", "implementation": "absl::uint128", "microseconds": 245535}, + {"group": "random_width", "operation": "gt", "implementation": "absl::uint128", "microseconds": 274276}, + {"group": "random_width", "operation": "ge", "implementation": "absl::uint128", "microseconds": 252214}, + {"group": "random_width", "operation": "comparisons", "implementation": "absl::uint128", "microseconds": 1199946}, + {"group": "random_width", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 102157}, + {"group": "random_width", "operation": "add", "implementation": "uint128", "microseconds": 89607}, + {"group": "random_width", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 2241970}, + {"group": "random_width", "operation": "add", "implementation": "absl::uint128", "microseconds": 91530}, + {"group": "random_width", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 112192}, + {"group": "random_width", "operation": "sub", "implementation": "uint128", "microseconds": 89322}, + {"group": "random_width", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 2346973}, + {"group": "random_width", "operation": "sub", "implementation": "absl::uint128", "microseconds": 90050}, + {"group": "random_width", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 116473}, + {"group": "random_width", "operation": "mul", "implementation": "uint128", "microseconds": 109967}, + {"group": "random_width", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 2262252}, + {"group": "random_width", "operation": "mul", "implementation": "absl::uint128", "microseconds": 110565}, + {"group": "random_width", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 1135328}, + {"group": "random_width", "operation": "div", "implementation": "uint128", "microseconds": 1077802}, + {"group": "random_width", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 3443408}, + {"group": "random_width", "operation": "div", "implementation": "absl::uint128", "microseconds": 20871271}, + {"group": "random_width", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 1271929}, + {"group": "random_width", "operation": "mod", "implementation": "uint128", "microseconds": 1165839}, + {"group": "random_width", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 2816863}, + {"group": "random_width", "operation": "mod", "implementation": "absl::uint128", "microseconds": 20945166}, + {"group": "random_width", "operation": "shl", "implementation": "std::_Unsigned128", "microseconds": 470241}, + {"group": "random_width", "operation": "shl", "implementation": "uint128", "microseconds": 465121}, + {"group": "random_width", "operation": "shl", "implementation": "boost::mp::uint128", "microseconds": 2718398}, + {"group": "random_width", "operation": "shl", "implementation": "absl::uint128", "microseconds": 425867}, + {"group": "random_width", "operation": "shr", "implementation": "std::_Unsigned128", "microseconds": 453370}, + {"group": "random_width", "operation": "shr", "implementation": "uint128", "microseconds": 490243}, + {"group": "random_width", "operation": "shr", "implementation": "boost::mp::uint128", "microseconds": 1458555}, + {"group": "random_width", "operation": "shr", "implementation": "absl::uint128", "microseconds": 477077}, + {"group": "random_width", "operation": "and", "implementation": "std::_Unsigned128", "microseconds": 84828}, + {"group": "random_width", "operation": "and", "implementation": "uint128", "microseconds": 83954}, + {"group": "random_width", "operation": "and", "implementation": "boost::mp::uint128", "microseconds": 1784232}, + {"group": "random_width", "operation": "and", "implementation": "absl::uint128", "microseconds": 85547}, + {"group": "random_width", "operation": "or", "implementation": "std::_Unsigned128", "microseconds": 83913}, + {"group": "random_width", "operation": "or", "implementation": "uint128", "microseconds": 85593}, + {"group": "random_width", "operation": "or", "implementation": "boost::mp::uint128", "microseconds": 1614234}, + {"group": "random_width", "operation": "or", "implementation": "absl::uint128", "microseconds": 85521}, + {"group": "random_width", "operation": "xor", "implementation": "std::_Unsigned128", "microseconds": 83761}, + {"group": "random_width", "operation": "xor", "implementation": "uint128", "microseconds": 86054}, + {"group": "random_width", "operation": "xor", "implementation": "boost::mp::uint128", "microseconds": 1597130}, + {"group": "random_width", "operation": "xor", "implementation": "absl::uint128", "microseconds": 87322} ] } diff --git a/doc/modules/ROOT/data/benchmarks-windows-x86/i128.json b/doc/modules/ROOT/data/benchmarks-windows-x86/i128.json index b4a0acbe..c5c68348 100644 --- a/doc/modules/ROOT/data/benchmarks-windows-x86/i128.json +++ b/doc/modules/ROOT/data/benchmarks-windows-x86/i128.json @@ -9,199 +9,263 @@ "elements": 10000000, "repetitions": 5, "baseline": "std::_Signed128", - "implementations": ["std::_Signed128", "int128", "boost::mp::int128"], + "implementations": ["std::_Signed128", "int128", "boost::mp::int128", "absl::int128"], "results": [ - {"group": "two_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 108143}, - {"group": "two_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 121480}, - {"group": "two_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 326809}, - {"group": "two_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 329212}, - {"group": "two_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 335263}, - {"group": "two_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 321083}, - {"group": "two_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 1542717}, - {"group": "two_word", "operation": "eq", "implementation": "int128", "microseconds": 114320}, - {"group": "two_word", "operation": "ne", "implementation": "int128", "microseconds": 114796}, - {"group": "two_word", "operation": "lt", "implementation": "int128", "microseconds": 306476}, - {"group": "two_word", "operation": "le", "implementation": "int128", "microseconds": 309236}, - {"group": "two_word", "operation": "gt", "implementation": "int128", "microseconds": 306653}, - {"group": "two_word", "operation": "ge", "implementation": "int128", "microseconds": 298919}, - {"group": "two_word", "operation": "comparisons", "implementation": "int128", "microseconds": 1451173}, - {"group": "two_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 178058}, - {"group": "two_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 175146}, - {"group": "two_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 201981}, - {"group": "two_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 206023}, - {"group": "two_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 206765}, - {"group": "two_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 205535}, - {"group": "two_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 1174190}, - {"group": "two_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 131534}, - {"group": "two_word", "operation": "add", "implementation": "int128", "microseconds": 128545}, - {"group": "two_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 895383}, - {"group": "two_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 448215}, - {"group": "two_word", "operation": "sub", "implementation": "int128", "microseconds": 126293}, - {"group": "two_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1216226}, - {"group": "two_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 876906}, - {"group": "two_word", "operation": "mul", "implementation": "int128", "microseconds": 150440}, - {"group": "two_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 2056075}, - {"group": "two_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 1381423}, - {"group": "two_word", "operation": "div", "implementation": "int128", "microseconds": 3119530}, - {"group": "two_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 2540283}, - {"group": "two_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 1442995}, - {"group": "two_word", "operation": "mod", "implementation": "int128", "microseconds": 3245915}, - {"group": "two_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 2912618}, - {"group": "two_word", "operation": "div64", "implementation": "std::_Signed128", "microseconds": 6151545}, - {"group": "two_word", "operation": "div64", "implementation": "int128", "microseconds": 4890501}, - {"group": "two_word", "operation": "div64", "implementation": "boost::mp::int128", "microseconds": 8378005}, - {"group": "two_word", "operation": "div32", "implementation": "std::_Signed128", "microseconds": 1009750}, - {"group": "two_word", "operation": "div32", "implementation": "int128", "microseconds": 2229358}, - {"group": "two_word", "operation": "div32", "implementation": "boost::mp::int128", "microseconds": 2506960}, - {"group": "one_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 111035}, - {"group": "one_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 122706}, - {"group": "one_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 313714}, - {"group": "one_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 328579}, - {"group": "one_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 327557}, - {"group": "one_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 330703}, - {"group": "one_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 1535024}, - {"group": "one_word", "operation": "eq", "implementation": "int128", "microseconds": 115297}, - {"group": "one_word", "operation": "ne", "implementation": "int128", "microseconds": 115006}, - {"group": "one_word", "operation": "lt", "implementation": "int128", "microseconds": 340399}, - {"group": "one_word", "operation": "le", "implementation": "int128", "microseconds": 341749}, - {"group": "one_word", "operation": "gt", "implementation": "int128", "microseconds": 339001}, - {"group": "one_word", "operation": "ge", "implementation": "int128", "microseconds": 348986}, - {"group": "one_word", "operation": "comparisons", "implementation": "int128", "microseconds": 1601097}, - {"group": "one_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 182432}, - {"group": "one_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 176358}, - {"group": "one_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 203754}, - {"group": "one_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 206787}, - {"group": "one_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 207307}, - {"group": "one_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 208903}, - {"group": "one_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 1186259}, - {"group": "one_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 132131}, - {"group": "one_word", "operation": "add", "implementation": "int128", "microseconds": 128640}, - {"group": "one_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1063235}, - {"group": "one_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 445868}, - {"group": "one_word", "operation": "sub", "implementation": "int128", "microseconds": 127619}, - {"group": "one_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1072151}, - {"group": "one_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 875980}, - {"group": "one_word", "operation": "mul", "implementation": "int128", "microseconds": 150148}, - {"group": "one_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 1421876}, - {"group": "one_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 2780825}, - {"group": "one_word", "operation": "div", "implementation": "int128", "microseconds": 2080868}, - {"group": "one_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 3067575}, - {"group": "one_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 1769676}, - {"group": "one_word", "operation": "mod", "implementation": "int128", "microseconds": 2069868}, - {"group": "one_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 2204244}, - {"group": "two_one_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 110317}, - {"group": "two_one_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 122763}, - {"group": "two_one_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 143448}, - {"group": "two_one_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 146344}, - {"group": "two_one_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 146958}, - {"group": "two_one_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 147263}, - {"group": "two_one_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 817741}, - {"group": "two_one_word", "operation": "eq", "implementation": "int128", "microseconds": 115277}, - {"group": "two_one_word", "operation": "ne", "implementation": "int128", "microseconds": 113121}, - {"group": "two_one_word", "operation": "lt", "implementation": "int128", "microseconds": 130912}, - {"group": "two_one_word", "operation": "le", "implementation": "int128", "microseconds": 138190}, - {"group": "two_one_word", "operation": "gt", "implementation": "int128", "microseconds": 134127}, - {"group": "two_one_word", "operation": "ge", "implementation": "int128", "microseconds": 149575}, - {"group": "two_one_word", "operation": "comparisons", "implementation": "int128", "microseconds": 781976}, - {"group": "two_one_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 173523}, - {"group": "two_one_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 173598}, - {"group": "two_one_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 199942}, - {"group": "two_one_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 201513}, - {"group": "two_one_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 201332}, - {"group": "two_one_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 201666}, - {"group": "two_one_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 1152250}, - {"group": "two_one_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 133021}, - {"group": "two_one_word", "operation": "add", "implementation": "int128", "microseconds": 130113}, - {"group": "two_one_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1135020}, - {"group": "two_one_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 446905}, - {"group": "two_one_word", "operation": "sub", "implementation": "int128", "microseconds": 127915}, - {"group": "two_one_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1157655}, - {"group": "two_one_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 876507}, - {"group": "two_one_word", "operation": "mul", "implementation": "int128", "microseconds": 151060}, - {"group": "two_one_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 1753229}, - {"group": "two_one_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 4330283}, - {"group": "two_one_word", "operation": "div", "implementation": "int128", "microseconds": 2863451}, - {"group": "two_one_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 4399611}, - {"group": "two_one_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 3164534}, - {"group": "two_one_word", "operation": "mod", "implementation": "int128", "microseconds": 2917767}, - {"group": "two_one_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 3890306}, - {"group": "one_two_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 108192}, - {"group": "one_two_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 121769}, - {"group": "one_two_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 141535}, - {"group": "one_two_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 146030}, - {"group": "one_two_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 147002}, - {"group": "one_two_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 148116}, - {"group": "one_two_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 813264}, - {"group": "one_two_word", "operation": "eq", "implementation": "int128", "microseconds": 115209}, - {"group": "one_two_word", "operation": "ne", "implementation": "int128", "microseconds": 113481}, - {"group": "one_two_word", "operation": "lt", "implementation": "int128", "microseconds": 130203}, - {"group": "one_two_word", "operation": "le", "implementation": "int128", "microseconds": 138620}, - {"group": "one_two_word", "operation": "gt", "implementation": "int128", "microseconds": 126340}, - {"group": "one_two_word", "operation": "ge", "implementation": "int128", "microseconds": 143148}, - {"group": "one_two_word", "operation": "comparisons", "implementation": "int128", "microseconds": 767531}, - {"group": "one_two_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 173677}, - {"group": "one_two_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 172441}, - {"group": "one_two_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 194442}, - {"group": "one_two_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 198482}, - {"group": "one_two_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 198579}, - {"group": "one_two_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 199208}, - {"group": "one_two_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 1137542}, - {"group": "one_two_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 132199}, - {"group": "one_two_word", "operation": "add", "implementation": "int128", "microseconds": 129425}, - {"group": "one_two_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1136419}, - {"group": "one_two_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 448283}, - {"group": "one_two_word", "operation": "sub", "implementation": "int128", "microseconds": 125556}, - {"group": "one_two_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1155766}, - {"group": "one_two_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 879154}, - {"group": "one_two_word", "operation": "mul", "implementation": "int128", "microseconds": 149158}, - {"group": "one_two_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 1742092}, - {"group": "one_two_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 4358734}, - {"group": "one_two_word", "operation": "div", "implementation": "int128", "microseconds": 2884710}, - {"group": "one_two_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 4412100}, - {"group": "one_two_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 3185147}, - {"group": "one_two_word", "operation": "mod", "implementation": "int128", "microseconds": 2921577}, - {"group": "one_two_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 3914892}, - {"group": "random_width", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 110926}, - {"group": "random_width", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 122126}, - {"group": "random_width", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 472037}, - {"group": "random_width", "operation": "le", "implementation": "std::_Signed128", "microseconds": 473262}, - {"group": "random_width", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 457672}, - {"group": "random_width", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 448069}, - {"group": "random_width", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 2084732}, - {"group": "random_width", "operation": "eq", "implementation": "int128", "microseconds": 114341}, - {"group": "random_width", "operation": "ne", "implementation": "int128", "microseconds": 114354}, - {"group": "random_width", "operation": "lt", "implementation": "int128", "microseconds": 404451}, - {"group": "random_width", "operation": "le", "implementation": "int128", "microseconds": 406857}, - {"group": "random_width", "operation": "gt", "implementation": "int128", "microseconds": 436327}, - {"group": "random_width", "operation": "ge", "implementation": "int128", "microseconds": 469934}, - {"group": "random_width", "operation": "comparisons", "implementation": "int128", "microseconds": 1947041}, - {"group": "random_width", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 448101}, - {"group": "random_width", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 436992}, - {"group": "random_width", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 499694}, - {"group": "random_width", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 502800}, - {"group": "random_width", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 513811}, - {"group": "random_width", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 496620}, - {"group": "random_width", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 2898710}, - {"group": "random_width", "operation": "add", "implementation": "std::_Signed128", "microseconds": 131344}, - {"group": "random_width", "operation": "add", "implementation": "int128", "microseconds": 128063}, - {"group": "random_width", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1325852}, - {"group": "random_width", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 447258}, - {"group": "random_width", "operation": "sub", "implementation": "int128", "microseconds": 128145}, - {"group": "random_width", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1454691}, - {"group": "random_width", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 877318}, - {"group": "random_width", "operation": "mul", "implementation": "int128", "microseconds": 149394}, - {"group": "random_width", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 2018981}, - {"group": "random_width", "operation": "div", "implementation": "std::_Signed128", "microseconds": 3479471}, - {"group": "random_width", "operation": "div", "implementation": "int128", "microseconds": 3113092}, - {"group": "random_width", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 3948298}, - {"group": "random_width", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 2683535}, - {"group": "random_width", "operation": "mod", "implementation": "int128", "microseconds": 3157295}, - {"group": "random_width", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 3620409}, - {"group": "random_width", "operation": "shl", "implementation": "std::_Signed128", "microseconds": 731928}, - {"group": "random_width", "operation": "shl", "implementation": "int128", "microseconds": 428800}, - {"group": "random_width", "operation": "shl", "implementation": "boost::mp::int128", "microseconds": 1634058}, - {"group": "random_width", "operation": "shr", "implementation": "std::_Signed128", "microseconds": 601309}, - {"group": "random_width", "operation": "shr", "implementation": "int128", "microseconds": 595011}, - {"group": "random_width", "operation": "shr", "implementation": "boost::mp::int128", "microseconds": 1144703} + {"group": "two_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 63256}, + {"group": "two_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 58382}, + {"group": "two_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 283921}, + {"group": "two_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 289345}, + {"group": "two_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 289994}, + {"group": "two_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 286071}, + {"group": "two_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 1271524}, + {"group": "two_word", "operation": "eq", "implementation": "int128", "microseconds": 72654}, + {"group": "two_word", "operation": "ne", "implementation": "int128", "microseconds": 77543}, + {"group": "two_word", "operation": "lt", "implementation": "int128", "microseconds": 257117}, + {"group": "two_word", "operation": "le", "implementation": "int128", "microseconds": 252753}, + {"group": "two_word", "operation": "gt", "implementation": "int128", "microseconds": 256863}, + {"group": "two_word", "operation": "ge", "implementation": "int128", "microseconds": 229589}, + {"group": "two_word", "operation": "comparisons", "implementation": "int128", "microseconds": 1146933}, + {"group": "two_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 161605}, + {"group": "two_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 168979}, + {"group": "two_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 222456}, + {"group": "two_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 233671}, + {"group": "two_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 229967}, + {"group": "two_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 235470}, + {"group": "two_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 1252591}, + {"group": "two_word", "operation": "eq", "implementation": "absl::int128", "microseconds": 71437}, + {"group": "two_word", "operation": "ne", "implementation": "absl::int128", "microseconds": 85421}, + {"group": "two_word", "operation": "lt", "implementation": "absl::int128", "microseconds": 252056}, + {"group": "two_word", "operation": "le", "implementation": "absl::int128", "microseconds": 256506}, + {"group": "two_word", "operation": "gt", "implementation": "absl::int128", "microseconds": 252278}, + {"group": "two_word", "operation": "ge", "implementation": "absl::int128", "microseconds": 236064}, + {"group": "two_word", "operation": "comparisons", "implementation": "absl::int128", "microseconds": 1154237}, + {"group": "two_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 72033}, + {"group": "two_word", "operation": "add", "implementation": "int128", "microseconds": 59307}, + {"group": "two_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 865263}, + {"group": "two_word", "operation": "add", "implementation": "absl::int128", "microseconds": 55208}, + {"group": "two_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 521429}, + {"group": "two_word", "operation": "sub", "implementation": "int128", "microseconds": 58718}, + {"group": "two_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1154570}, + {"group": "two_word", "operation": "sub", "implementation": "absl::int128", "microseconds": 58451}, + {"group": "two_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 954461}, + {"group": "two_word", "operation": "mul", "implementation": "int128", "microseconds": 169155}, + {"group": "two_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 2483530}, + {"group": "two_word", "operation": "mul", "implementation": "absl::int128", "microseconds": 3844710}, + {"group": "two_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 1631738}, + {"group": "two_word", "operation": "div", "implementation": "int128", "microseconds": 3082697}, + {"group": "two_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 2314149}, + {"group": "two_word", "operation": "div", "implementation": "absl::int128", "microseconds": 2305171}, + {"group": "two_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 1759825}, + {"group": "two_word", "operation": "mod", "implementation": "int128", "microseconds": 3130657}, + {"group": "two_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 2560658}, + {"group": "two_word", "operation": "mod", "implementation": "absl::int128", "microseconds": 2290558}, + {"group": "two_word", "operation": "div64", "implementation": "std::_Signed128", "microseconds": 4784225}, + {"group": "two_word", "operation": "div64", "implementation": "int128", "microseconds": 3605098}, + {"group": "two_word", "operation": "div64", "implementation": "boost::mp::int128", "microseconds": 7893773}, + {"group": "two_word", "operation": "div64", "implementation": "absl::int128", "microseconds": 34272957}, + {"group": "two_word", "operation": "div32", "implementation": "std::_Signed128", "microseconds": 1277923}, + {"group": "two_word", "operation": "div32", "implementation": "int128", "microseconds": 2069372}, + {"group": "two_word", "operation": "div32", "implementation": "boost::mp::int128", "microseconds": 2859041}, + {"group": "two_word", "operation": "div32", "implementation": "absl::int128", "microseconds": 47822241}, + {"group": "one_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 63489}, + {"group": "one_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 56536}, + {"group": "one_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 275849}, + {"group": "one_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 282849}, + {"group": "one_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 281273}, + {"group": "one_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 288605}, + {"group": "one_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 1249039}, + {"group": "one_word", "operation": "eq", "implementation": "int128", "microseconds": 72674}, + {"group": "one_word", "operation": "ne", "implementation": "int128", "microseconds": 71534}, + {"group": "one_word", "operation": "lt", "implementation": "int128", "microseconds": 260178}, + {"group": "one_word", "operation": "le", "implementation": "int128", "microseconds": 255789}, + {"group": "one_word", "operation": "gt", "implementation": "int128", "microseconds": 256847}, + {"group": "one_word", "operation": "ge", "implementation": "int128", "microseconds": 246224}, + {"group": "one_word", "operation": "comparisons", "implementation": "int128", "microseconds": 1163783}, + {"group": "one_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 161366}, + {"group": "one_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 166343}, + {"group": "one_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 234453}, + {"group": "one_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 232774}, + {"group": "one_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 227733}, + {"group": "one_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 234209}, + {"group": "one_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 1257321}, + {"group": "one_word", "operation": "eq", "implementation": "absl::int128", "microseconds": 80139}, + {"group": "one_word", "operation": "ne", "implementation": "absl::int128", "microseconds": 80423}, + {"group": "one_word", "operation": "lt", "implementation": "absl::int128", "microseconds": 301936}, + {"group": "one_word", "operation": "le", "implementation": "absl::int128", "microseconds": 283377}, + {"group": "one_word", "operation": "gt", "implementation": "absl::int128", "microseconds": 278894}, + {"group": "one_word", "operation": "ge", "implementation": "absl::int128", "microseconds": 292528}, + {"group": "one_word", "operation": "comparisons", "implementation": "absl::int128", "microseconds": 1317736}, + {"group": "one_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 81460}, + {"group": "one_word", "operation": "add", "implementation": "int128", "microseconds": 62707}, + {"group": "one_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1242476}, + {"group": "one_word", "operation": "add", "implementation": "absl::int128", "microseconds": 55838}, + {"group": "one_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 558528}, + {"group": "one_word", "operation": "sub", "implementation": "int128", "microseconds": 58454}, + {"group": "one_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1042999}, + {"group": "one_word", "operation": "sub", "implementation": "absl::int128", "microseconds": 58171}, + {"group": "one_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 962512}, + {"group": "one_word", "operation": "mul", "implementation": "int128", "microseconds": 168505}, + {"group": "one_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 1632525}, + {"group": "one_word", "operation": "mul", "implementation": "absl::int128", "microseconds": 3841638}, + {"group": "one_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 1813705}, + {"group": "one_word", "operation": "div", "implementation": "int128", "microseconds": 1609814}, + {"group": "one_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 2314192}, + {"group": "one_word", "operation": "div", "implementation": "absl::int128", "microseconds": 2235179}, + {"group": "one_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 1262817}, + {"group": "one_word", "operation": "mod", "implementation": "int128", "microseconds": 1664375}, + {"group": "one_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 1847948}, + {"group": "one_word", "operation": "mod", "implementation": "absl::int128", "microseconds": 2234267}, + {"group": "two_one_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 65016}, + {"group": "two_one_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 76909}, + {"group": "two_one_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 185184}, + {"group": "two_one_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 148755}, + {"group": "two_one_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 142662}, + {"group": "two_one_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 185626}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 804821}, + {"group": "two_one_word", "operation": "eq", "implementation": "int128", "microseconds": 73008}, + {"group": "two_one_word", "operation": "ne", "implementation": "int128", "microseconds": 72551}, + {"group": "two_one_word", "operation": "lt", "implementation": "int128", "microseconds": 129939}, + {"group": "two_one_word", "operation": "le", "implementation": "int128", "microseconds": 130914}, + {"group": "two_one_word", "operation": "gt", "implementation": "int128", "microseconds": 139217}, + {"group": "two_one_word", "operation": "ge", "implementation": "int128", "microseconds": 109714}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "int128", "microseconds": 655785}, + {"group": "two_one_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 137897}, + {"group": "two_one_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 149030}, + {"group": "two_one_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 205453}, + {"group": "two_one_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 209419}, + {"group": "two_one_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 214891}, + {"group": "two_one_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 214038}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 1131138}, + {"group": "two_one_word", "operation": "eq", "implementation": "absl::int128", "microseconds": 71673}, + {"group": "two_one_word", "operation": "ne", "implementation": "absl::int128", "microseconds": 76923}, + {"group": "two_one_word", "operation": "lt", "implementation": "absl::int128", "microseconds": 128749}, + {"group": "two_one_word", "operation": "le", "implementation": "absl::int128", "microseconds": 138207}, + {"group": "two_one_word", "operation": "gt", "implementation": "absl::int128", "microseconds": 121685}, + {"group": "two_one_word", "operation": "ge", "implementation": "absl::int128", "microseconds": 114479}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "absl::int128", "microseconds": 652122}, + {"group": "two_one_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 71688}, + {"group": "two_one_word", "operation": "add", "implementation": "int128", "microseconds": 55988}, + {"group": "two_one_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1104605}, + {"group": "two_one_word", "operation": "add", "implementation": "absl::int128", "microseconds": 61021}, + {"group": "two_one_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 516622}, + {"group": "two_one_word", "operation": "sub", "implementation": "int128", "microseconds": 62784}, + {"group": "two_one_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1135520}, + {"group": "two_one_word", "operation": "sub", "implementation": "absl::int128", "microseconds": 57971}, + {"group": "two_one_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 960302}, + {"group": "two_one_word", "operation": "mul", "implementation": "int128", "microseconds": 170863}, + {"group": "two_one_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 2081654}, + {"group": "two_one_word", "operation": "mul", "implementation": "absl::int128", "microseconds": 3862884}, + {"group": "two_one_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 3501142}, + {"group": "two_one_word", "operation": "div", "implementation": "int128", "microseconds": 2360344}, + {"group": "two_one_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 4037702}, + {"group": "two_one_word", "operation": "div", "implementation": "absl::int128", "microseconds": 16831210}, + {"group": "two_one_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 2780473}, + {"group": "two_one_word", "operation": "mod", "implementation": "int128", "microseconds": 2451714}, + {"group": "two_one_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 3729578}, + {"group": "two_one_word", "operation": "mod", "implementation": "absl::int128", "microseconds": 16753270}, + {"group": "one_two_word", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 63195}, + {"group": "one_two_word", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 56653}, + {"group": "one_two_word", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 182228}, + {"group": "one_two_word", "operation": "le", "implementation": "std::_Signed128", "microseconds": 142883}, + {"group": "one_two_word", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 148636}, + {"group": "one_two_word", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 186440}, + {"group": "one_two_word", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 780542}, + {"group": "one_two_word", "operation": "eq", "implementation": "int128", "microseconds": 73066}, + {"group": "one_two_word", "operation": "ne", "implementation": "int128", "microseconds": 71076}, + {"group": "one_two_word", "operation": "lt", "implementation": "int128", "microseconds": 139646}, + {"group": "one_two_word", "operation": "le", "implementation": "int128", "microseconds": 120831}, + {"group": "one_two_word", "operation": "gt", "implementation": "int128", "microseconds": 131017}, + {"group": "one_two_word", "operation": "ge", "implementation": "int128", "microseconds": 108408}, + {"group": "one_two_word", "operation": "comparisons", "implementation": "int128", "microseconds": 644474}, + {"group": "one_two_word", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 165042}, + {"group": "one_two_word", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 141245}, + {"group": "one_two_word", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 205014}, + {"group": "one_two_word", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 236097}, + {"group": "one_two_word", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 206921}, + {"group": "one_two_word", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 214482}, + {"group": "one_two_word", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 1169349}, + {"group": "one_two_word", "operation": "eq", "implementation": "absl::int128", "microseconds": 71282}, + {"group": "one_two_word", "operation": "ne", "implementation": "absl::int128", "microseconds": 76776}, + {"group": "one_two_word", "operation": "lt", "implementation": "absl::int128", "microseconds": 122149}, + {"group": "one_two_word", "operation": "le", "implementation": "absl::int128", "microseconds": 142297}, + {"group": "one_two_word", "operation": "gt", "implementation": "absl::int128", "microseconds": 121503}, + {"group": "one_two_word", "operation": "ge", "implementation": "absl::int128", "microseconds": 113286}, + {"group": "one_two_word", "operation": "comparisons", "implementation": "absl::int128", "microseconds": 647756}, + {"group": "one_two_word", "operation": "add", "implementation": "std::_Signed128", "microseconds": 71154}, + {"group": "one_two_word", "operation": "add", "implementation": "int128", "microseconds": 56565}, + {"group": "one_two_word", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1110636}, + {"group": "one_two_word", "operation": "add", "implementation": "absl::int128", "microseconds": 62691}, + {"group": "one_two_word", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 523535}, + {"group": "one_two_word", "operation": "sub", "implementation": "int128", "microseconds": 69580}, + {"group": "one_two_word", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1147568}, + {"group": "one_two_word", "operation": "sub", "implementation": "absl::int128", "microseconds": 57610}, + {"group": "one_two_word", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 976916}, + {"group": "one_two_word", "operation": "mul", "implementation": "int128", "microseconds": 171795}, + {"group": "one_two_word", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 2131973}, + {"group": "one_two_word", "operation": "mul", "implementation": "absl::int128", "microseconds": 3917729}, + {"group": "one_two_word", "operation": "div", "implementation": "std::_Signed128", "microseconds": 3523813}, + {"group": "one_two_word", "operation": "div", "implementation": "int128", "microseconds": 2378487}, + {"group": "one_two_word", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 4018663}, + {"group": "one_two_word", "operation": "div", "implementation": "absl::int128", "microseconds": 16752383}, + {"group": "one_two_word", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 2774014}, + {"group": "one_two_word", "operation": "mod", "implementation": "int128", "microseconds": 2456410}, + {"group": "one_two_word", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 3770044}, + {"group": "one_two_word", "operation": "mod", "implementation": "absl::int128", "microseconds": 16944099}, + {"group": "random_width", "operation": "eq", "implementation": "std::_Signed128", "microseconds": 64013}, + {"group": "random_width", "operation": "ne", "implementation": "std::_Signed128", "microseconds": 66452}, + {"group": "random_width", "operation": "lt", "implementation": "std::_Signed128", "microseconds": 374245}, + {"group": "random_width", "operation": "le", "implementation": "std::_Signed128", "microseconds": 381698}, + {"group": "random_width", "operation": "gt", "implementation": "std::_Signed128", "microseconds": 378481}, + {"group": "random_width", "operation": "ge", "implementation": "std::_Signed128", "microseconds": 377161}, + {"group": "random_width", "operation": "comparisons", "implementation": "std::_Signed128", "microseconds": 1642521}, + {"group": "random_width", "operation": "eq", "implementation": "int128", "microseconds": 72579}, + {"group": "random_width", "operation": "ne", "implementation": "int128", "microseconds": 73300}, + {"group": "random_width", "operation": "lt", "implementation": "int128", "microseconds": 351532}, + {"group": "random_width", "operation": "le", "implementation": "int128", "microseconds": 339700}, + {"group": "random_width", "operation": "gt", "implementation": "int128", "microseconds": 340051}, + {"group": "random_width", "operation": "ge", "implementation": "int128", "microseconds": 323430}, + {"group": "random_width", "operation": "comparisons", "implementation": "int128", "microseconds": 1501096}, + {"group": "random_width", "operation": "eq", "implementation": "boost::mp::int128", "microseconds": 371527}, + {"group": "random_width", "operation": "ne", "implementation": "boost::mp::int128", "microseconds": 371541}, + {"group": "random_width", "operation": "lt", "implementation": "boost::mp::int128", "microseconds": 441441}, + {"group": "random_width", "operation": "le", "implementation": "boost::mp::int128", "microseconds": 435774}, + {"group": "random_width", "operation": "gt", "implementation": "boost::mp::int128", "microseconds": 427758}, + {"group": "random_width", "operation": "ge", "implementation": "boost::mp::int128", "microseconds": 438192}, + {"group": "random_width", "operation": "comparisons", "implementation": "boost::mp::int128", "microseconds": 2486760}, + {"group": "random_width", "operation": "eq", "implementation": "absl::int128", "microseconds": 75856}, + {"group": "random_width", "operation": "ne", "implementation": "absl::int128", "microseconds": 81221}, + {"group": "random_width", "operation": "lt", "implementation": "absl::int128", "microseconds": 351900}, + {"group": "random_width", "operation": "le", "implementation": "absl::int128", "microseconds": 342894}, + {"group": "random_width", "operation": "gt", "implementation": "absl::int128", "microseconds": 335207}, + {"group": "random_width", "operation": "ge", "implementation": "absl::int128", "microseconds": 329538}, + {"group": "random_width", "operation": "comparisons", "implementation": "absl::int128", "microseconds": 1517123}, + {"group": "random_width", "operation": "add", "implementation": "std::_Signed128", "microseconds": 73033}, + {"group": "random_width", "operation": "add", "implementation": "int128", "microseconds": 58313}, + {"group": "random_width", "operation": "add", "implementation": "boost::mp::int128", "microseconds": 1218478}, + {"group": "random_width", "operation": "add", "implementation": "absl::int128", "microseconds": 55079}, + {"group": "random_width", "operation": "sub", "implementation": "std::_Signed128", "microseconds": 517398}, + {"group": "random_width", "operation": "sub", "implementation": "int128", "microseconds": 66889}, + {"group": "random_width", "operation": "sub", "implementation": "boost::mp::int128", "microseconds": 1314906}, + {"group": "random_width", "operation": "sub", "implementation": "absl::int128", "microseconds": 57791}, + {"group": "random_width", "operation": "mul", "implementation": "std::_Signed128", "microseconds": 970404}, + {"group": "random_width", "operation": "mul", "implementation": "int128", "microseconds": 170877}, + {"group": "random_width", "operation": "mul", "implementation": "boost::mp::int128", "microseconds": 2302831}, + {"group": "random_width", "operation": "mul", "implementation": "absl::int128", "microseconds": 3865486}, + {"group": "random_width", "operation": "div", "implementation": "std::_Signed128", "microseconds": 2840529}, + {"group": "random_width", "operation": "div", "implementation": "int128", "microseconds": 2663730}, + {"group": "random_width", "operation": "div", "implementation": "boost::mp::int128", "microseconds": 3362691}, + {"group": "random_width", "operation": "div", "implementation": "absl::int128", "microseconds": 9883544}, + {"group": "random_width", "operation": "mod", "implementation": "std::_Signed128", "microseconds": 2390312}, + {"group": "random_width", "operation": "mod", "implementation": "int128", "microseconds": 2752450}, + {"group": "random_width", "operation": "mod", "implementation": "boost::mp::int128", "microseconds": 3255144}, + {"group": "random_width", "operation": "mod", "implementation": "absl::int128", "microseconds": 9862440}, + {"group": "random_width", "operation": "shl", "implementation": "std::_Signed128", "microseconds": 778024}, + {"group": "random_width", "operation": "shl", "implementation": "int128", "microseconds": 409236}, + {"group": "random_width", "operation": "shl", "implementation": "boost::mp::int128", "microseconds": 1512531}, + {"group": "random_width", "operation": "shl", "implementation": "absl::int128", "microseconds": 392809}, + {"group": "random_width", "operation": "shr", "implementation": "std::_Signed128", "microseconds": 542204}, + {"group": "random_width", "operation": "shr", "implementation": "int128", "microseconds": 547471}, + {"group": "random_width", "operation": "shr", "implementation": "boost::mp::int128", "microseconds": 1078337}, + {"group": "random_width", "operation": "shr", "implementation": "absl::int128", "microseconds": 526459} ] } diff --git a/doc/modules/ROOT/data/benchmarks-windows-x86/u128.json b/doc/modules/ROOT/data/benchmarks-windows-x86/u128.json index c7755ea1..c48e2df7 100644 --- a/doc/modules/ROOT/data/benchmarks-windows-x86/u128.json +++ b/doc/modules/ROOT/data/benchmarks-windows-x86/u128.json @@ -9,208 +9,267 @@ "elements": 10000000, "repetitions": 5, "baseline": "std::_Unsigned128", - "implementations": ["std::_Unsigned128", "uint128", "boost::mp::uint128"], + "implementations": ["std::_Unsigned128", "uint128", "boost::mp::uint128", "absl::uint128"], "results": [ - {"group": "two_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 111788}, - {"group": "two_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 122339}, - {"group": "two_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 323060}, - {"group": "two_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 325475}, - {"group": "two_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 330384}, - {"group": "two_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 334949}, - {"group": "two_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 1548670}, - {"group": "two_word", "operation": "eq", "implementation": "uint128", "microseconds": 111987}, - {"group": "two_word", "operation": "ne", "implementation": "uint128", "microseconds": 111075}, - {"group": "two_word", "operation": "lt", "implementation": "uint128", "microseconds": 107904}, - {"group": "two_word", "operation": "le", "implementation": "uint128", "microseconds": 108037}, - {"group": "two_word", "operation": "gt", "implementation": "uint128", "microseconds": 108826}, - {"group": "two_word", "operation": "ge", "implementation": "uint128", "microseconds": 108928}, - {"group": "two_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 657415}, - {"group": "two_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 159671}, - {"group": "two_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 158739}, - {"group": "two_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 163112}, - {"group": "two_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 163280}, - {"group": "two_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 166279}, - {"group": "two_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 169625}, - {"group": "two_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 981366}, - {"group": "two_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 132260}, - {"group": "two_word", "operation": "add", "implementation": "uint128", "microseconds": 130457}, - {"group": "two_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 725440}, - {"group": "two_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 454180}, - {"group": "two_word", "operation": "sub", "implementation": "uint128", "microseconds": 127847}, - {"group": "two_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 840902}, - {"group": "two_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 640255}, - {"group": "two_word", "operation": "mul", "implementation": "uint128", "microseconds": 849501}, - {"group": "two_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 1725572}, - {"group": "two_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 1303008}, - {"group": "two_word", "operation": "div", "implementation": "uint128", "microseconds": 2647866}, - {"group": "two_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 2401610}, - {"group": "two_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 1407621}, - {"group": "two_word", "operation": "mod", "implementation": "uint128", "microseconds": 2757143}, - {"group": "two_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 2465767}, - {"group": "two_word", "operation": "div64", "implementation": "std::_Unsigned128", "microseconds": 5939342}, - {"group": "two_word", "operation": "div64", "implementation": "uint128", "microseconds": 4769849}, - {"group": "two_word", "operation": "div64", "implementation": "boost::mp::uint128", "microseconds": 8809478}, - {"group": "two_word", "operation": "div32", "implementation": "std::_Unsigned128", "microseconds": 907913}, - {"group": "two_word", "operation": "div32", "implementation": "uint128", "microseconds": 2077709}, - {"group": "two_word", "operation": "div32", "implementation": "boost::mp::uint128", "microseconds": 2168714}, - {"group": "one_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 109597}, - {"group": "one_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 122231}, - {"group": "one_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 330580}, - {"group": "one_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 314128}, - {"group": "one_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 329492}, - {"group": "one_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 326205}, - {"group": "one_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 1533024}, - {"group": "one_word", "operation": "eq", "implementation": "uint128", "microseconds": 115544}, - {"group": "one_word", "operation": "ne", "implementation": "uint128", "microseconds": 115732}, - {"group": "one_word", "operation": "lt", "implementation": "uint128", "microseconds": 114280}, - {"group": "one_word", "operation": "le", "implementation": "uint128", "microseconds": 119807}, - {"group": "one_word", "operation": "gt", "implementation": "uint128", "microseconds": 115487}, - {"group": "one_word", "operation": "ge", "implementation": "uint128", "microseconds": 120178}, - {"group": "one_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 701750}, - {"group": "one_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 160131}, - {"group": "one_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 156597}, - {"group": "one_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 162769}, - {"group": "one_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 163931}, - {"group": "one_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 164305}, - {"group": "one_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 168866}, - {"group": "one_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 977193}, - {"group": "one_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 132141}, - {"group": "one_word", "operation": "add", "implementation": "uint128", "microseconds": 129407}, - {"group": "one_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 706287}, - {"group": "one_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 447422}, - {"group": "one_word", "operation": "sub", "implementation": "uint128", "microseconds": 126486}, - {"group": "one_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 1141714}, - {"group": "one_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 635946}, - {"group": "one_word", "operation": "mul", "implementation": "uint128", "microseconds": 828587}, - {"group": "one_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 1038315}, - {"group": "one_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 2611033}, - {"group": "one_word", "operation": "div", "implementation": "uint128", "microseconds": 1648668}, - {"group": "one_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 2916830}, - {"group": "one_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 1683172}, - {"group": "one_word", "operation": "mod", "implementation": "uint128", "microseconds": 1658140}, - {"group": "one_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 2094871}, - {"group": "two_one_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 109352}, - {"group": "two_one_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 122157}, - {"group": "two_one_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 143315}, - {"group": "two_one_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 145669}, - {"group": "two_one_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 146211}, - {"group": "two_one_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 147384}, - {"group": "two_one_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 814792}, - {"group": "two_one_word", "operation": "eq", "implementation": "uint128", "microseconds": 111456}, - {"group": "two_one_word", "operation": "ne", "implementation": "uint128", "microseconds": 109635}, - {"group": "two_one_word", "operation": "lt", "implementation": "uint128", "microseconds": 107279}, - {"group": "two_one_word", "operation": "le", "implementation": "uint128", "microseconds": 110132}, - {"group": "two_one_word", "operation": "gt", "implementation": "uint128", "microseconds": 107568}, - {"group": "two_one_word", "operation": "ge", "implementation": "uint128", "microseconds": 107846}, - {"group": "two_one_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 654429}, - {"group": "two_one_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 146795}, - {"group": "two_one_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 141890}, - {"group": "two_one_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 142986}, - {"group": "two_one_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 147852}, - {"group": "two_one_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 145872}, - {"group": "two_one_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 155021}, - {"group": "two_one_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 881108}, - {"group": "two_one_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 132415}, - {"group": "two_one_word", "operation": "add", "implementation": "uint128", "microseconds": 129679}, - {"group": "two_one_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 836745}, - {"group": "two_one_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 448486}, - {"group": "two_one_word", "operation": "sub", "implementation": "uint128", "microseconds": 129784}, - {"group": "two_one_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 962373}, - {"group": "two_one_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 640016}, - {"group": "two_one_word", "operation": "mul", "implementation": "uint128", "microseconds": 838259}, - {"group": "two_one_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 1497013}, - {"group": "two_one_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 4237486}, - {"group": "two_one_word", "operation": "div", "implementation": "uint128", "microseconds": 2544129}, - {"group": "two_one_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 4572514}, - {"group": "two_one_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 3120280}, - {"group": "two_one_word", "operation": "mod", "implementation": "uint128", "microseconds": 2700149}, - {"group": "two_one_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 4100977}, - {"group": "one_two_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 109990}, - {"group": "one_two_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 122457}, - {"group": "one_two_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 146899}, - {"group": "one_two_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 146907}, - {"group": "one_two_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 146446}, - {"group": "one_two_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 147949}, - {"group": "one_two_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 821440}, - {"group": "one_two_word", "operation": "eq", "implementation": "uint128", "microseconds": 112212}, - {"group": "one_two_word", "operation": "ne", "implementation": "uint128", "microseconds": 110783}, - {"group": "one_two_word", "operation": "lt", "implementation": "uint128", "microseconds": 108143}, - {"group": "one_two_word", "operation": "le", "implementation": "uint128", "microseconds": 108439}, - {"group": "one_two_word", "operation": "gt", "implementation": "uint128", "microseconds": 108024}, - {"group": "one_two_word", "operation": "ge", "implementation": "uint128", "microseconds": 107744}, - {"group": "one_two_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 655905}, - {"group": "one_two_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 145768}, - {"group": "one_two_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 141727}, - {"group": "one_two_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 143186}, - {"group": "one_two_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 147160}, - {"group": "one_two_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 148670}, - {"group": "one_two_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 154250}, - {"group": "one_two_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 881509}, - {"group": "one_two_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 132212}, - {"group": "one_two_word", "operation": "add", "implementation": "uint128", "microseconds": 129563}, - {"group": "one_two_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 833087}, - {"group": "one_two_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 445284}, - {"group": "one_two_word", "operation": "sub", "implementation": "uint128", "microseconds": 128974}, - {"group": "one_two_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 954273}, - {"group": "one_two_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 635062}, - {"group": "one_two_word", "operation": "mul", "implementation": "uint128", "microseconds": 831912}, - {"group": "one_two_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 1419132}, - {"group": "one_two_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 4247013}, - {"group": "one_two_word", "operation": "div", "implementation": "uint128", "microseconds": 2537809}, - {"group": "one_two_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 4568929}, - {"group": "one_two_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 3114097}, - {"group": "one_two_word", "operation": "mod", "implementation": "uint128", "microseconds": 2706961}, - {"group": "one_two_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 4089359}, - {"group": "random_width", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 109078}, - {"group": "random_width", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 121623}, - {"group": "random_width", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 545990}, - {"group": "random_width", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 584235}, - {"group": "random_width", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 588748}, - {"group": "random_width", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 569493}, - {"group": "random_width", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 2519936}, - {"group": "random_width", "operation": "eq", "implementation": "uint128", "microseconds": 222272}, - {"group": "random_width", "operation": "ne", "implementation": "uint128", "microseconds": 218961}, - {"group": "random_width", "operation": "lt", "implementation": "uint128", "microseconds": 403374}, - {"group": "random_width", "operation": "le", "implementation": "uint128", "microseconds": 396483}, - {"group": "random_width", "operation": "gt", "implementation": "uint128", "microseconds": 372956}, - {"group": "random_width", "operation": "ge", "implementation": "uint128", "microseconds": 391753}, - {"group": "random_width", "operation": "comparisons", "implementation": "uint128", "microseconds": 2006459}, - {"group": "random_width", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 247933}, - {"group": "random_width", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 257483}, - {"group": "random_width", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 246619}, - {"group": "random_width", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 249601}, - {"group": "random_width", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 250095}, - {"group": "random_width", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 264252}, - {"group": "random_width", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 1516713}, - {"group": "random_width", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 132021}, - {"group": "random_width", "operation": "add", "implementation": "uint128", "microseconds": 129303}, - {"group": "random_width", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 1184928}, - {"group": "random_width", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 505196}, - {"group": "random_width", "operation": "sub", "implementation": "uint128", "microseconds": 127036}, - {"group": "random_width", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 1526177}, - {"group": "random_width", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 765417}, - {"group": "random_width", "operation": "mul", "implementation": "uint128", "microseconds": 960622}, - {"group": "random_width", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 1459692}, - {"group": "random_width", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 2510903}, - {"group": "random_width", "operation": "div", "implementation": "uint128", "microseconds": 2217091}, - {"group": "random_width", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 2816842}, - {"group": "random_width", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 1985290}, - {"group": "random_width", "operation": "mod", "implementation": "uint128", "microseconds": 2271454}, - {"group": "random_width", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 2458916}, - {"group": "random_width", "operation": "shl", "implementation": "std::_Unsigned128", "microseconds": 733372}, - {"group": "random_width", "operation": "shl", "implementation": "uint128", "microseconds": 424985}, - {"group": "random_width", "operation": "shl", "implementation": "boost::mp::uint128", "microseconds": 1585122}, - {"group": "random_width", "operation": "shr", "implementation": "std::_Unsigned128", "microseconds": 771271}, - {"group": "random_width", "operation": "shr", "implementation": "uint128", "microseconds": 547815}, - {"group": "random_width", "operation": "shr", "implementation": "boost::mp::uint128", "microseconds": 1045069}, - {"group": "random_width", "operation": "and", "implementation": "std::_Unsigned128", "microseconds": 131113}, - {"group": "random_width", "operation": "and", "implementation": "uint128", "microseconds": 131871}, - {"group": "random_width", "operation": "and", "implementation": "boost::mp::uint128", "microseconds": 1503443}, - {"group": "random_width", "operation": "or", "implementation": "std::_Unsigned128", "microseconds": 131561}, - {"group": "random_width", "operation": "or", "implementation": "uint128", "microseconds": 131184}, - {"group": "random_width", "operation": "or", "implementation": "boost::mp::uint128", "microseconds": 1208348}, - {"group": "random_width", "operation": "xor", "implementation": "std::_Unsigned128", "microseconds": 130425}, - {"group": "random_width", "operation": "xor", "implementation": "uint128", "microseconds": 130219}, - {"group": "random_width", "operation": "xor", "implementation": "boost::mp::uint128", "microseconds": 1235254} + {"group": "two_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 70811}, + {"group": "two_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 69703}, + {"group": "two_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 290932}, + {"group": "two_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 291958}, + {"group": "two_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 283112}, + {"group": "two_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 295871}, + {"group": "two_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 1303005}, + {"group": "two_word", "operation": "eq", "implementation": "uint128", "microseconds": 59564}, + {"group": "two_word", "operation": "ne", "implementation": "uint128", "microseconds": 60619}, + {"group": "two_word", "operation": "lt", "implementation": "uint128", "microseconds": 70340}, + {"group": "two_word", "operation": "le", "implementation": "uint128", "microseconds": 69287}, + {"group": "two_word", "operation": "gt", "implementation": "uint128", "microseconds": 69515}, + {"group": "two_word", "operation": "ge", "implementation": "uint128", "microseconds": 69346}, + {"group": "two_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 399282}, + {"group": "two_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 115165}, + {"group": "two_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 99062}, + {"group": "two_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 103922}, + {"group": "two_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 101593}, + {"group": "two_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 100671}, + {"group": "two_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 113206}, + {"group": "two_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 634094}, + {"group": "two_word", "operation": "eq", "implementation": "absl::uint128", "microseconds": 71759}, + {"group": "two_word", "operation": "ne", "implementation": "absl::uint128", "microseconds": 77632}, + {"group": "two_word", "operation": "lt", "implementation": "absl::uint128", "microseconds": 254403}, + {"group": "two_word", "operation": "le", "implementation": "absl::uint128", "microseconds": 254114}, + {"group": "two_word", "operation": "gt", "implementation": "absl::uint128", "microseconds": 252021}, + {"group": "two_word", "operation": "ge", "implementation": "absl::uint128", "microseconds": 235373}, + {"group": "two_word", "operation": "comparisons", "implementation": "absl::uint128", "microseconds": 1145736}, + {"group": "two_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 71348}, + {"group": "two_word", "operation": "add", "implementation": "uint128", "microseconds": 58557}, + {"group": "two_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 772142}, + {"group": "two_word", "operation": "add", "implementation": "absl::uint128", "microseconds": 61282}, + {"group": "two_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 524681}, + {"group": "two_word", "operation": "sub", "implementation": "uint128", "microseconds": 61119}, + {"group": "two_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 991484}, + {"group": "two_word", "operation": "sub", "implementation": "absl::uint128", "microseconds": 60197}, + {"group": "two_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 845730}, + {"group": "two_word", "operation": "mul", "implementation": "uint128", "microseconds": 1039687}, + {"group": "two_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 2300583}, + {"group": "two_word", "operation": "mul", "implementation": "absl::uint128", "microseconds": 1649041}, + {"group": "two_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 1483968}, + {"group": "two_word", "operation": "div", "implementation": "uint128", "microseconds": 2592750}, + {"group": "two_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 2410700}, + {"group": "two_word", "operation": "div", "implementation": "absl::uint128", "microseconds": 1878507}, + {"group": "two_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 1680524}, + {"group": "two_word", "operation": "mod", "implementation": "uint128", "microseconds": 2695520}, + {"group": "two_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 2435239}, + {"group": "two_word", "operation": "mod", "implementation": "absl::uint128", "microseconds": 1874267}, + {"group": "two_word", "operation": "div64", "implementation": "std::_Unsigned128", "microseconds": 4641847}, + {"group": "two_word", "operation": "div64", "implementation": "uint128", "microseconds": 3488426}, + {"group": "two_word", "operation": "div64", "implementation": "boost::mp::uint128", "microseconds": 8011172}, + {"group": "two_word", "operation": "div64", "implementation": "absl::uint128", "microseconds": 33160757}, + {"group": "two_word", "operation": "div32", "implementation": "std::_Unsigned128", "microseconds": 1037987}, + {"group": "two_word", "operation": "div32", "implementation": "uint128", "microseconds": 1834832}, + {"group": "two_word", "operation": "div32", "implementation": "boost::mp::uint128", "microseconds": 2639883}, + {"group": "two_word", "operation": "div32", "implementation": "absl::uint128", "microseconds": 45512330}, + {"group": "one_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 71966}, + {"group": "one_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 70379}, + {"group": "one_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 282609}, + {"group": "one_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 279089}, + {"group": "one_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 283526}, + {"group": "one_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 285174}, + {"group": "one_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 1273182}, + {"group": "one_word", "operation": "eq", "implementation": "uint128", "microseconds": 72731}, + {"group": "one_word", "operation": "ne", "implementation": "uint128", "microseconds": 71789}, + {"group": "one_word", "operation": "lt", "implementation": "uint128", "microseconds": 95475}, + {"group": "one_word", "operation": "le", "implementation": "uint128", "microseconds": 111877}, + {"group": "one_word", "operation": "gt", "implementation": "uint128", "microseconds": 104859}, + {"group": "one_word", "operation": "ge", "implementation": "uint128", "microseconds": 117924}, + {"group": "one_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 575239}, + {"group": "one_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 114676}, + {"group": "one_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 95424}, + {"group": "one_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 106001}, + {"group": "one_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 102008}, + {"group": "one_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 101282}, + {"group": "one_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 113156}, + {"group": "one_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 633113}, + {"group": "one_word", "operation": "eq", "implementation": "absl::uint128", "microseconds": 71554}, + {"group": "one_word", "operation": "ne", "implementation": "absl::uint128", "microseconds": 77786}, + {"group": "one_word", "operation": "lt", "implementation": "absl::uint128", "microseconds": 262804}, + {"group": "one_word", "operation": "le", "implementation": "absl::uint128", "microseconds": 255196}, + {"group": "one_word", "operation": "gt", "implementation": "absl::uint128", "microseconds": 261190}, + {"group": "one_word", "operation": "ge", "implementation": "absl::uint128", "microseconds": 277444}, + {"group": "one_word", "operation": "comparisons", "implementation": "absl::uint128", "microseconds": 1206429}, + {"group": "one_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 72871}, + {"group": "one_word", "operation": "add", "implementation": "uint128", "microseconds": 58674}, + {"group": "one_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 699659}, + {"group": "one_word", "operation": "add", "implementation": "absl::uint128", "microseconds": 64320}, + {"group": "one_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 528540}, + {"group": "one_word", "operation": "sub", "implementation": "uint128", "microseconds": 60675}, + {"group": "one_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 1070943}, + {"group": "one_word", "operation": "sub", "implementation": "absl::uint128", "microseconds": 58847}, + {"group": "one_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 844377}, + {"group": "one_word", "operation": "mul", "implementation": "uint128", "microseconds": 1028194}, + {"group": "one_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 1379719}, + {"group": "one_word", "operation": "mul", "implementation": "absl::uint128", "microseconds": 1650943}, + {"group": "one_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 1737882}, + {"group": "one_word", "operation": "div", "implementation": "uint128", "microseconds": 1215651}, + {"group": "one_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 2090353}, + {"group": "one_word", "operation": "div", "implementation": "absl::uint128", "microseconds": 1742934}, + {"group": "one_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 1192437}, + {"group": "one_word", "operation": "mod", "implementation": "uint128", "microseconds": 1180641}, + {"group": "one_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 1604696}, + {"group": "two_one_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 70957}, + {"group": "two_one_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 69118}, + {"group": "two_one_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 141255}, + {"group": "two_one_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 188127}, + {"group": "two_one_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 181189}, + {"group": "two_one_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 146661}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 797748}, + {"group": "two_one_word", "operation": "eq", "implementation": "uint128", "microseconds": 59180}, + {"group": "two_one_word", "operation": "ne", "implementation": "uint128", "microseconds": 59520}, + {"group": "two_one_word", "operation": "lt", "implementation": "uint128", "microseconds": 69857}, + {"group": "two_one_word", "operation": "le", "implementation": "uint128", "microseconds": 69460}, + {"group": "two_one_word", "operation": "gt", "implementation": "uint128", "microseconds": 69178}, + {"group": "two_one_word", "operation": "ge", "implementation": "uint128", "microseconds": 69014}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 396721}, + {"group": "two_one_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 97085}, + {"group": "two_one_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 81001}, + {"group": "two_one_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 85738}, + {"group": "two_one_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 80401}, + {"group": "two_one_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 80353}, + {"group": "two_one_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 80890}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 505976}, + {"group": "two_one_word", "operation": "eq", "implementation": "absl::uint128", "microseconds": 71859}, + {"group": "two_one_word", "operation": "ne", "implementation": "absl::uint128", "microseconds": 78465}, + {"group": "two_one_word", "operation": "lt", "implementation": "absl::uint128", "microseconds": 121439}, + {"group": "two_one_word", "operation": "le", "implementation": "absl::uint128", "microseconds": 129150}, + {"group": "two_one_word", "operation": "gt", "implementation": "absl::uint128", "microseconds": 121873}, + {"group": "two_one_word", "operation": "ge", "implementation": "absl::uint128", "microseconds": 113761}, + {"group": "two_one_word", "operation": "comparisons", "implementation": "absl::uint128", "microseconds": 636908}, + {"group": "two_one_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 72204}, + {"group": "two_one_word", "operation": "add", "implementation": "uint128", "microseconds": 55883}, + {"group": "two_one_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 825455}, + {"group": "two_one_word", "operation": "add", "implementation": "absl::uint128", "microseconds": 59802}, + {"group": "two_one_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 525149}, + {"group": "two_one_word", "operation": "sub", "implementation": "uint128", "microseconds": 59982}, + {"group": "two_one_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 989658}, + {"group": "two_one_word", "operation": "sub", "implementation": "absl::uint128", "microseconds": 58997}, + {"group": "two_one_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 842743}, + {"group": "two_one_word", "operation": "mul", "implementation": "uint128", "microseconds": 1034011}, + {"group": "two_one_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 1813658}, + {"group": "two_one_word", "operation": "mul", "implementation": "absl::uint128", "microseconds": 1649965}, + {"group": "two_one_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 3295881}, + {"group": "two_one_word", "operation": "div", "implementation": "uint128", "microseconds": 2076987}, + {"group": "two_one_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 4297069}, + {"group": "two_one_word", "operation": "div", "implementation": "absl::uint128", "microseconds": 16471647}, + {"group": "two_one_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 2801543}, + {"group": "two_one_word", "operation": "mod", "implementation": "uint128", "microseconds": 2178155}, + {"group": "two_one_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 3868128}, + {"group": "two_one_word", "operation": "mod", "implementation": "absl::uint128", "microseconds": 16510902}, + {"group": "one_two_word", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 70223}, + {"group": "one_two_word", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 69220}, + {"group": "one_two_word", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 141706}, + {"group": "one_two_word", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 191416}, + {"group": "one_two_word", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 179800}, + {"group": "one_two_word", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 143120}, + {"group": "one_two_word", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 795954}, + {"group": "one_two_word", "operation": "eq", "implementation": "uint128", "microseconds": 58711}, + {"group": "one_two_word", "operation": "ne", "implementation": "uint128", "microseconds": 59301}, + {"group": "one_two_word", "operation": "lt", "implementation": "uint128", "microseconds": 68826}, + {"group": "one_two_word", "operation": "le", "implementation": "uint128", "microseconds": 68868}, + {"group": "one_two_word", "operation": "gt", "implementation": "uint128", "microseconds": 68353}, + {"group": "one_two_word", "operation": "ge", "implementation": "uint128", "microseconds": 68482}, + {"group": "one_two_word", "operation": "comparisons", "implementation": "uint128", "microseconds": 392956}, + {"group": "one_two_word", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 95352}, + {"group": "one_two_word", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 80882}, + {"group": "one_two_word", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 78051}, + {"group": "one_two_word", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 79434}, + {"group": "one_two_word", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 94900}, + {"group": "one_two_word", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 79533}, + {"group": "one_two_word", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 508611}, + {"group": "one_two_word", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 72130}, + {"group": "one_two_word", "operation": "add", "implementation": "uint128", "microseconds": 56930}, + {"group": "one_two_word", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 811222}, + {"group": "one_two_word", "operation": "add", "implementation": "absl::uint128", "microseconds": 58905}, + {"group": "one_two_word", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 525698}, + {"group": "one_two_word", "operation": "sub", "implementation": "uint128", "microseconds": 60284}, + {"group": "one_two_word", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 983159}, + {"group": "one_two_word", "operation": "sub", "implementation": "absl::uint128", "microseconds": 58588}, + {"group": "one_two_word", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 849850}, + {"group": "one_two_word", "operation": "mul", "implementation": "uint128", "microseconds": 1028144}, + {"group": "one_two_word", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 1824417}, + {"group": "one_two_word", "operation": "mul", "implementation": "absl::uint128", "microseconds": 1651740}, + {"group": "one_two_word", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 3295014}, + {"group": "one_two_word", "operation": "div", "implementation": "uint128", "microseconds": 2084146}, + {"group": "one_two_word", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 4287565}, + {"group": "one_two_word", "operation": "div", "implementation": "absl::uint128", "microseconds": 16515344}, + {"group": "one_two_word", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 2842461}, + {"group": "one_two_word", "operation": "mod", "implementation": "uint128", "microseconds": 2175863}, + {"group": "one_two_word", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 3900113}, + {"group": "one_two_word", "operation": "mod", "implementation": "absl::uint128", "microseconds": 16581318}, + {"group": "random_width", "operation": "eq", "implementation": "std::_Unsigned128", "microseconds": 75452}, + {"group": "random_width", "operation": "ne", "implementation": "std::_Unsigned128", "microseconds": 70379}, + {"group": "random_width", "operation": "lt", "implementation": "std::_Unsigned128", "microseconds": 461166}, + {"group": "random_width", "operation": "le", "implementation": "std::_Unsigned128", "microseconds": 448955}, + {"group": "random_width", "operation": "gt", "implementation": "std::_Unsigned128", "microseconds": 450858}, + {"group": "random_width", "operation": "ge", "implementation": "std::_Unsigned128", "microseconds": 471505}, + {"group": "random_width", "operation": "comparisons", "implementation": "std::_Unsigned128", "microseconds": 1978828}, + {"group": "random_width", "operation": "eq", "implementation": "uint128", "microseconds": 159335}, + {"group": "random_width", "operation": "ne", "implementation": "uint128", "microseconds": 162546}, + {"group": "random_width", "operation": "lt", "implementation": "uint128", "microseconds": 357684}, + {"group": "random_width", "operation": "le", "implementation": "uint128", "microseconds": 356945}, + {"group": "random_width", "operation": "gt", "implementation": "uint128", "microseconds": 368406}, + {"group": "random_width", "operation": "ge", "implementation": "uint128", "microseconds": 356209}, + {"group": "random_width", "operation": "comparisons", "implementation": "uint128", "microseconds": 1761531}, + {"group": "random_width", "operation": "eq", "implementation": "boost::mp::uint128", "microseconds": 185549}, + {"group": "random_width", "operation": "ne", "implementation": "boost::mp::uint128", "microseconds": 178219}, + {"group": "random_width", "operation": "lt", "implementation": "boost::mp::uint128", "microseconds": 163029}, + {"group": "random_width", "operation": "le", "implementation": "boost::mp::uint128", "microseconds": 174386}, + {"group": "random_width", "operation": "gt", "implementation": "boost::mp::uint128", "microseconds": 169779}, + {"group": "random_width", "operation": "ge", "implementation": "boost::mp::uint128", "microseconds": 167751}, + {"group": "random_width", "operation": "comparisons", "implementation": "boost::mp::uint128", "microseconds": 1039171}, + {"group": "random_width", "operation": "eq", "implementation": "absl::uint128", "microseconds": 71932}, + {"group": "random_width", "operation": "ne", "implementation": "absl::uint128", "microseconds": 77329}, + {"group": "random_width", "operation": "lt", "implementation": "absl::uint128", "microseconds": 433242}, + {"group": "random_width", "operation": "le", "implementation": "absl::uint128", "microseconds": 414006}, + {"group": "random_width", "operation": "gt", "implementation": "absl::uint128", "microseconds": 429412}, + {"group": "random_width", "operation": "ge", "implementation": "absl::uint128", "microseconds": 402510}, + {"group": "random_width", "operation": "comparisons", "implementation": "absl::uint128", "microseconds": 1828790}, + {"group": "random_width", "operation": "add", "implementation": "std::_Unsigned128", "microseconds": 71811}, + {"group": "random_width", "operation": "add", "implementation": "uint128", "microseconds": 56033}, + {"group": "random_width", "operation": "add", "implementation": "boost::mp::uint128", "microseconds": 1029278}, + {"group": "random_width", "operation": "add", "implementation": "absl::uint128", "microseconds": 60322}, + {"group": "random_width", "operation": "sub", "implementation": "std::_Unsigned128", "microseconds": 574255}, + {"group": "random_width", "operation": "sub", "implementation": "uint128", "microseconds": 61036}, + {"group": "random_width", "operation": "sub", "implementation": "boost::mp::uint128", "microseconds": 1351338}, + {"group": "random_width", "operation": "sub", "implementation": "absl::uint128", "microseconds": 59280}, + {"group": "random_width", "operation": "mul", "implementation": "std::_Unsigned128", "microseconds": 938730}, + {"group": "random_width", "operation": "mul", "implementation": "uint128", "microseconds": 1121940}, + {"group": "random_width", "operation": "mul", "implementation": "boost::mp::uint128", "microseconds": 1741827}, + {"group": "random_width", "operation": "mul", "implementation": "absl::uint128", "microseconds": 1668286}, + {"group": "random_width", "operation": "div", "implementation": "std::_Unsigned128", "microseconds": 2111143}, + {"group": "random_width", "operation": "div", "implementation": "uint128", "microseconds": 1944458}, + {"group": "random_width", "operation": "div", "implementation": "boost::mp::uint128", "microseconds": 2592836}, + {"group": "random_width", "operation": "div", "implementation": "absl::uint128", "microseconds": 11246769}, + {"group": "random_width", "operation": "mod", "implementation": "std::_Unsigned128", "microseconds": 1858981}, + {"group": "random_width", "operation": "mod", "implementation": "uint128", "microseconds": 1985261}, + {"group": "random_width", "operation": "mod", "implementation": "boost::mp::uint128", "microseconds": 2215040}, + {"group": "random_width", "operation": "mod", "implementation": "absl::uint128", "microseconds": 11258901}, + {"group": "random_width", "operation": "shl", "implementation": "std::_Unsigned128", "microseconds": 786952}, + {"group": "random_width", "operation": "shl", "implementation": "uint128", "microseconds": 410411}, + {"group": "random_width", "operation": "shl", "implementation": "boost::mp::uint128", "microseconds": 1403075}, + {"group": "random_width", "operation": "shl", "implementation": "absl::uint128", "microseconds": 389094}, + {"group": "random_width", "operation": "shr", "implementation": "std::_Unsigned128", "microseconds": 762557}, + {"group": "random_width", "operation": "shr", "implementation": "uint128", "microseconds": 564858}, + {"group": "random_width", "operation": "shr", "implementation": "boost::mp::uint128", "microseconds": 876787}, + {"group": "random_width", "operation": "shr", "implementation": "absl::uint128", "microseconds": 550554}, + {"group": "random_width", "operation": "and", "implementation": "std::_Unsigned128", "microseconds": 60012}, + {"group": "random_width", "operation": "and", "implementation": "uint128", "microseconds": 85086}, + {"group": "random_width", "operation": "and", "implementation": "boost::mp::uint128", "microseconds": 1226457}, + {"group": "random_width", "operation": "and", "implementation": "absl::uint128", "microseconds": 75844}, + {"group": "random_width", "operation": "or", "implementation": "std::_Unsigned128", "microseconds": 62039}, + {"group": "random_width", "operation": "or", "implementation": "uint128", "microseconds": 85199}, + {"group": "random_width", "operation": "or", "implementation": "boost::mp::uint128", "microseconds": 1098240}, + {"group": "random_width", "operation": "or", "implementation": "absl::uint128", "microseconds": 77240}, + {"group": "random_width", "operation": "xor", "implementation": "std::_Unsigned128", "microseconds": 60997}, + {"group": "random_width", "operation": "xor", "implementation": "uint128", "microseconds": 89907}, + {"group": "random_width", "operation": "xor", "implementation": "boost::mp::uint128", "microseconds": 1155308}, + {"group": "random_width", "operation": "xor", "implementation": "absl::uint128", "microseconds": 76920} ] } diff --git a/doc/modules/ROOT/images/i128_graphs/windows/ARM64_benchmarks.png b/doc/modules/ROOT/images/i128_graphs/windows/ARM64_benchmarks.png index f0749c0d..d057c7b8 100644 Binary files a/doc/modules/ROOT/images/i128_graphs/windows/ARM64_benchmarks.png and b/doc/modules/ROOT/images/i128_graphs/windows/ARM64_benchmarks.png differ diff --git a/doc/modules/ROOT/images/i128_graphs/windows/ARM64_relative_performance.png b/doc/modules/ROOT/images/i128_graphs/windows/ARM64_relative_performance.png index ce60057a..2245b61a 100644 Binary files a/doc/modules/ROOT/images/i128_graphs/windows/ARM64_relative_performance.png and b/doc/modules/ROOT/images/i128_graphs/windows/ARM64_relative_performance.png differ diff --git a/doc/modules/ROOT/images/i128_graphs/windows/x64_benchmarks.png b/doc/modules/ROOT/images/i128_graphs/windows/x64_benchmarks.png index f32de4a4..28aad47e 100644 Binary files a/doc/modules/ROOT/images/i128_graphs/windows/x64_benchmarks.png and b/doc/modules/ROOT/images/i128_graphs/windows/x64_benchmarks.png differ diff --git a/doc/modules/ROOT/images/i128_graphs/windows/x64_relative_performance.png b/doc/modules/ROOT/images/i128_graphs/windows/x64_relative_performance.png index 96a15de1..e5dcb302 100644 Binary files a/doc/modules/ROOT/images/i128_graphs/windows/x64_relative_performance.png and b/doc/modules/ROOT/images/i128_graphs/windows/x64_relative_performance.png differ diff --git a/doc/modules/ROOT/images/i128_graphs/windows/x86_benchmarks.png b/doc/modules/ROOT/images/i128_graphs/windows/x86_benchmarks.png index a1b460a3..f8a7571a 100644 Binary files a/doc/modules/ROOT/images/i128_graphs/windows/x86_benchmarks.png and b/doc/modules/ROOT/images/i128_graphs/windows/x86_benchmarks.png differ diff --git a/doc/modules/ROOT/images/i128_graphs/windows/x86_relative_performance.png b/doc/modules/ROOT/images/i128_graphs/windows/x86_relative_performance.png index 37fa9d03..c8e996bd 100644 Binary files a/doc/modules/ROOT/images/i128_graphs/windows/x86_relative_performance.png and b/doc/modules/ROOT/images/i128_graphs/windows/x86_relative_performance.png differ diff --git a/doc/modules/ROOT/images/u128_graphs/windows/ARM64_benchmarks.png b/doc/modules/ROOT/images/u128_graphs/windows/ARM64_benchmarks.png index 811142d8..42ef1a09 100644 Binary files a/doc/modules/ROOT/images/u128_graphs/windows/ARM64_benchmarks.png and b/doc/modules/ROOT/images/u128_graphs/windows/ARM64_benchmarks.png differ diff --git a/doc/modules/ROOT/images/u128_graphs/windows/ARM64_relative_performance.png b/doc/modules/ROOT/images/u128_graphs/windows/ARM64_relative_performance.png index c295d16b..e43a396a 100644 Binary files a/doc/modules/ROOT/images/u128_graphs/windows/ARM64_relative_performance.png and b/doc/modules/ROOT/images/u128_graphs/windows/ARM64_relative_performance.png differ diff --git a/doc/modules/ROOT/images/u128_graphs/windows/x64_benchmarks.png b/doc/modules/ROOT/images/u128_graphs/windows/x64_benchmarks.png index 5193f9ee..153c4126 100644 Binary files a/doc/modules/ROOT/images/u128_graphs/windows/x64_benchmarks.png and b/doc/modules/ROOT/images/u128_graphs/windows/x64_benchmarks.png differ diff --git a/doc/modules/ROOT/images/u128_graphs/windows/x64_relative_performance.png b/doc/modules/ROOT/images/u128_graphs/windows/x64_relative_performance.png index 74a3046a..6945e25e 100644 Binary files a/doc/modules/ROOT/images/u128_graphs/windows/x64_relative_performance.png and b/doc/modules/ROOT/images/u128_graphs/windows/x64_relative_performance.png differ diff --git a/doc/modules/ROOT/images/u128_graphs/windows/x86_benchmarks.png b/doc/modules/ROOT/images/u128_graphs/windows/x86_benchmarks.png index da869eee..58549a02 100644 Binary files a/doc/modules/ROOT/images/u128_graphs/windows/x86_benchmarks.png and b/doc/modules/ROOT/images/u128_graphs/windows/x86_benchmarks.png differ diff --git a/doc/modules/ROOT/images/u128_graphs/windows/x86_relative_performance.png b/doc/modules/ROOT/images/u128_graphs/windows/x86_relative_performance.png index 6856d6fd..10dbd63e 100644 Binary files a/doc/modules/ROOT/images/u128_graphs/windows/x86_relative_performance.png and b/doc/modules/ROOT/images/u128_graphs/windows/x86_relative_performance.png differ diff --git a/doc/modules/ROOT/pages/i128_benchmarks.adoc b/doc/modules/ROOT/pages/i128_benchmarks.adoc index 4dbdbca2..9cbf1cda 100644 --- a/doc/modules/ROOT/pages/i128_benchmarks.adoc +++ b/doc/modules/ROOT/pages/i128_benchmarks.adoc @@ -19,6 +19,8 @@ On most platforms we use the builtin `\__int128` as the reference benchmark. When this is unavailable (such as on 32-bit architectures) we use `boost::multiprecision::int128` (abbreviated as `boost::mp::int128`) as it is widely used, and known to be portable. On MSVC platforms we use as reference `std::_Signed128` from the header `<__msvc_int128.hpp>` since this is bundled with their compiler. Lastly, when available, the benchmarks are also run with `absl::int128` which is the 128-bit signed integer from the https://abseil.io[Abseil Libraries]. +Linux and macOS take Abseil from a package; Windows has none, so it is built from source at a pinned release with the same compiler and optimization flags as the rest of the table. +Abseil only uses a native 128-bit type when the compiler has one, which MSVC does not, so its portable path is what the Windows rows measure. NOTE: Each platform reports a single run, several of them from shared CI runners, so treat small differences as noise. @@ -166,16 +168,16 @@ image::i128_graphs/linux/ARM32_relative_performance.png[ARM32 Relative Performan Measured with MSVC 14.51 (pass:[C++]20): 5 passes over 20,000,000 element pairs (100,000,000 operations per cell). -[cols="1,>1,>1,>1"] +[cols="1,>1,>1,>1,>1"] |=== -| Operation | `std::_Signed128` | `int128` | `boost::mp::int128` +| Operation | `std::_Signed128` | `int128` | `boost::mp::int128` | `absl::int128` -| Comparisons | 1,361,518 | 1,271,189 | 4,315,263 -| Addition | 115,135 | 107,633 | 2,089,612 -| Subtraction | 108,885 | 105,990 | 2,265,849 -| Multiplication | 196,081 | 113,761 | 3,024,735 -| Division | 1,031,262 | 1,241,974 | 4,191,052 -| Modulo | 1,080,810 | 1,327,820 | 4,139,305 +| Comparisons | 1,313,422 | 1,301,134 | 4,219,069 | 1,310,527 +| Addition | 104,308 | 105,315 | 2,122,367 | 92,929 +| Subtraction | 101,850 | 100,240 | 2,328,494 | 93,068 +| Multiplication | 167,872 | 112,184 | 3,004,661 | 114,658 +| Division | 938,908 | 1,233,042 | 4,238,571 | 17,581,284 +| Modulo | 1,101,512 | 1,330,229 | 4,187,828 | 17,626,117 |=== image::i128_graphs/windows/x64_relative_performance.png[x64 Relative Performance, width=100%] @@ -184,16 +186,16 @@ image::i128_graphs/windows/x64_relative_performance.png[x64 Relative Performance Measured with MSVC 14.44 (pass:[C++]20): 5 passes over 20,000,000 element pairs (100,000,000 operations per cell). -[cols="1,>1,>1,>1"] +[cols="1,>1,>1,>1,>1"] |=== -| Operation | `std::_Signed128` | `int128` | `boost::mp::int128` +| Operation | `std::_Signed128` | `int128` | `boost::mp::int128` | `absl::int128` -| Comparisons | 1,191,566 | 1,125,261 | 2,871,780 -| Addition | 86,160 | 84,055 | 1,598,093 -| Subtraction | 88,263 | 87,934 | 1,769,736 -| Multiplication | 505,934 | 81,566 | 2,395,038 -| Division | 1,506,403 | 1,480,602 | 3,622,476 -| Modulo | 1,722,778 | 1,447,734 | 3,555,076 +| Comparisons | 1,163,962 | 1,124,237 | 2,892,406 | 1,176,305 +| Addition | 88,279 | 83,389 | 1,604,518 | 86,567 +| Subtraction | 88,880 | 86,568 | 1,766,980 | 88,994 +| Multiplication | 532,086 | 81,119 | 2,389,516 | 129,947 +| Division | 1,507,951 | 1,480,214 | 3,623,405 | 10,773,260 +| Modulo | 1,720,557 | 1,443,956 | 3,531,333 | 10,797,356 |=== image::i128_graphs/windows/ARM64_relative_performance.png[ARM64 Relative Performance, width=100%] @@ -202,16 +204,16 @@ image::i128_graphs/windows/ARM64_relative_performance.png[ARM64 Relative Perform Measured with MSVC 14.51 (pass:[C++]20): 5 passes over 10,000,000 element pairs (50,000,000 operations per cell). -[cols="1,>1,>1,>1"] +[cols="1,>1,>1,>1,>1"] |=== -| Operation | `std::_Signed128` | `int128` | `boost::mp::int128` +| Operation | `std::_Signed128` | `int128` | `boost::mp::int128` | `absl::int128` -| Comparisons | 2,084,732 | 1,947,041 | 2,898,710 -| Addition | 131,344 | 128,063 | 1,325,852 -| Subtraction | 447,258 | 128,145 | 1,454,691 -| Multiplication | 877,318 | 149,394 | 2,018,981 -| Division | 3,479,471 | 3,113,092 | 3,948,298 -| Modulo | 2,683,535 | 3,157,295 | 3,620,409 +| Comparisons | 1,642,521 | 1,501,096 | 2,486,760 | 1,517,123 +| Addition | 73,033 | 58,313 | 1,218,478 | 55,079 +| Subtraction | 517,398 | 66,889 | 1,314,906 | 57,791 +| Multiplication | 970,404 | 170,877 | 2,302,831 | 3,865,486 +| Division | 2,840,529 | 2,663,730 | 3,362,691 | 9,883,544 +| Modulo | 2,390,312 | 2,752,450 | 3,255,144 | 9,862,440 |=== image::i128_graphs/windows/x86_relative_performance.png[x86 Relative Performance, width=100%] diff --git a/doc/modules/ROOT/pages/u128_benchmarks.adoc b/doc/modules/ROOT/pages/u128_benchmarks.adoc index 734ed0c5..82dc4ced 100644 --- a/doc/modules/ROOT/pages/u128_benchmarks.adoc +++ b/doc/modules/ROOT/pages/u128_benchmarks.adoc @@ -19,6 +19,8 @@ On most platforms we use the builtin `unsigned \__int128` as the reference bench When this is unavailable (such as on 32-bit architectures) we use `boost::multiprecision::uint128` (abbreviated as `boost::mp::uint128`) as it is widely used, and known to be portable. On MSVC platforms we use as reference `std::_Unsigned128` from the header `<__msvc_int128.hpp>` since this is bundled with their compiler. Lastly, when available, the benchmarks are also run with `absl::uint128` which is the 128-bit unsigned integer from the https://abseil.io[Abseil Libraries]. +Linux and macOS take Abseil from a package; Windows has none, so it is built from source at a pinned release with the same compiler and optimization flags as the rest of the table. +Abseil only uses a native 128-bit type when the compiler has one, which MSVC does not, so its portable path is what the Windows rows measure. NOTE: Each platform reports a single run, several of them from shared CI runners, so treat small differences as noise. @@ -166,16 +168,16 @@ image::u128_graphs/linux/ARM32_relative_performance.png[ARM32 Relative Performan Measured with MSVC 14.51 (pass:[C++]20): 5 passes over 20,000,000 element pairs (100,000,000 operations per cell). -[cols="1,>1,>1,>1"] +[cols="1,>1,>1,>1,>1"] |=== -| Operation | `std::_Unsigned128` | `uint128` | `boost::mp::uint128` +| Operation | `std::_Unsigned128` | `uint128` | `boost::mp::uint128` | `absl::uint128` -| Comparisons | 1,313,048 | 1,251,724 | 1,970,110 -| Addition | 106,229 | 98,075 | 2,153,287 -| Subtraction | 115,275 | 97,252 | 2,318,242 -| Multiplication | 115,091 | 112,082 | 2,428,936 -| Division | 1,127,057 | 1,086,078 | 3,340,168 -| Modulo | 1,249,176 | 1,144,617 | 2,721,519 +| Comparisons | 1,351,853 | 1,210,126 | 1,953,037 | 1,199,946 +| Addition | 102,157 | 89,607 | 2,241,970 | 91,530 +| Subtraction | 112,192 | 89,322 | 2,346,973 | 90,050 +| Multiplication | 116,473 | 109,967 | 2,262,252 | 110,565 +| Division | 1,135,328 | 1,077,802 | 3,443,408 | 20,871,271 +| Modulo | 1,271,929 | 1,165,839 | 2,816,863 | 20,945,166 |=== image::u128_graphs/windows/x64_relative_performance.png[x64 Relative Performance, width=100%] @@ -184,16 +186,16 @@ image::u128_graphs/windows/x64_relative_performance.png[x64 Relative Performance Measured with MSVC 14.44 (pass:[C++]20): 5 passes over 20,000,000 element pairs (100,000,000 operations per cell). -[cols="1,>1,>1,>1"] +[cols="1,>1,>1,>1,>1"] |=== -| Operation | `std::_Unsigned128` | `uint128` | `boost::mp::uint128` +| Operation | `std::_Unsigned128` | `uint128` | `boost::mp::uint128` | `absl::uint128` -| Comparisons | 1,262,216 | 753,322 | 1,757,122 -| Addition | 86,038 | 84,791 | 1,535,904 -| Subtraction | 86,521 | 87,885 | 1,712,929 -| Multiplication | 458,107 | 82,947 | 1,780,541 -| Division | 1,334,323 | 920,483 | 2,843,970 -| Modulo | 1,491,426 | 915,935 | 2,420,312 +| Comparisons | 1,198,039 | 749,538 | 1,780,083 | 1,146,973 +| Addition | 88,759 | 85,378 | 1,534,492 | 86,222 +| Subtraction | 86,292 | 84,435 | 1,707,180 | 92,099 +| Multiplication | 457,638 | 83,669 | 1,785,505 | 127,263 +| Division | 1,337,104 | 921,115 | 2,824,979 | 12,558,253 +| Modulo | 1,488,718 | 918,404 | 2,433,789 | 12,522,017 |=== image::u128_graphs/windows/ARM64_relative_performance.png[ARM64 Relative Performance, width=100%] @@ -202,16 +204,16 @@ image::u128_graphs/windows/ARM64_relative_performance.png[ARM64 Relative Perform Measured with MSVC 14.51 (pass:[C++]20): 5 passes over 10,000,000 element pairs (50,000,000 operations per cell). -[cols="1,>1,>1,>1"] +[cols="1,>1,>1,>1,>1"] |=== -| Operation | `std::_Unsigned128` | `uint128` | `boost::mp::uint128` +| Operation | `std::_Unsigned128` | `uint128` | `boost::mp::uint128` | `absl::uint128` -| Comparisons | 2,519,936 | 2,006,459 | 1,516,713 -| Addition | 132,021 | 129,303 | 1,184,928 -| Subtraction | 505,196 | 127,036 | 1,526,177 -| Multiplication | 765,417 | 960,622 | 1,459,692 -| Division | 2,510,903 | 2,217,091 | 2,816,842 -| Modulo | 1,985,290 | 2,271,454 | 2,458,916 +| Comparisons | 1,978,828 | 1,761,531 | 1,039,171 | 1,828,790 +| Addition | 71,811 | 56,033 | 1,029,278 | 60,322 +| Subtraction | 574,255 | 61,036 | 1,351,338 | 59,280 +| Multiplication | 938,730 | 1,121,940 | 1,741,827 | 1,668,286 +| Division | 2,111,143 | 1,944,458 | 2,592,836 | 11,246,769 +| Modulo | 1,858,981 | 1,985,261 | 2,215,040 | 11,258,901 |=== image::u128_graphs/windows/x86_relative_performance.png[x86 Relative Performance, width=100%] diff --git a/test/benchmark_i128.cpp b/test/benchmark_i128.cpp index 112be6a3..b90db303 100644 --- a/test/benchmark_i128.cpp +++ b/test/benchmark_i128.cpp @@ -22,8 +22,8 @@ #define BOOST_INT128_HAS_MSVC_INTERNAL_I128 #endif -// Abseil requires at least C++17 (at time of writing) -#if __has_include() && defined(__cplusplus) && __cplusplus >= 201703L +#if __has_include() && \ + (__cplusplus >= 201703L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L)) # include # ifndef __i386__ # define BOOST_INT128_BENCHMARK_ABSL diff --git a/test/benchmark_u128.cpp b/test/benchmark_u128.cpp index 077ed0d0..e7299428 100644 --- a/test/benchmark_u128.cpp +++ b/test/benchmark_u128.cpp @@ -23,8 +23,8 @@ #define BOOST_INT128_HAS_MSVC_INTERNAL_I128 #endif -// Abseil requires at least C++17 (at time of writing) -#if __has_include() && defined(__cplusplus) && __cplusplus >= 201703L +#if __has_include() && \ + (__cplusplus >= 201703L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L)) # include # ifndef __i386__ # define BOOST_INT128_BENCHMARK_ABSL