/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
library/cpp/int128/bench/main.cpp
45 строк
1 KB
qkrorlqr
Initial NBS OpenSource export
28 апр 2023, 21:54
28 апр 2023, 21:54
783a858
Код
Авторство
О чём код?
#include <library/cpp/int128/int128.h> #include <library/cpp/testing/benchmark/bench.h> #include <util/generic/xrange.h> #include <util/system/compiler.h> Y_CPU_BENCHMARK(LibraryDivisionUnsigned128, iface) { ui128 b = {0, 10'000'000}; for (const auto i : xrange(iface.Iterations())) { ui128 a = i * 10'000'000; ui128 c = a / b; Y_FAKE_READ(c); } } #if defined(Y_HAVE_INT128) Y_CPU_BENCHMARK(IntrinsicDivisionUnsigned128, iface) { unsigned __int128 b = 10'000'000; for (const auto i : xrange(iface.Iterations())) { unsigned __int128 a = i * 10'000'000; unsigned __int128 c = a / b; Y_FAKE_READ(c); } } #endif // Y_HAVE_INT128 Y_CPU_BENCHMARK(LibraryDivisionSigned128, iface) { i128 b = {0, 10'000'000}; for (const auto i : xrange(iface.Iterations())) { i128 a = i * 10'000'000; i128 c = a / b; Y_FAKE_READ(c); } } #if defined(Y_HAVE_INT128) Y_CPU_BENCHMARK(IntrinsicDivisionSigned128, iface) { signed __int128 b = 10'000'000; for (const auto i : xrange(iface.Iterations())) { signed __int128 a = i * 10'000'000; signed __int128 c = a / b; Y_FAKE_READ(c); } } #endif // Y_HAVE_INT128