aboutsummaryrefslogtreecommitdiffstats
path: root/util/system/benchmark/rdtsc/main.cpp
diff options
context:
space:
mode:
authorAnton Samokhvalov <pg83@yandex.ru>2022-02-10 16:45:17 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:45:17 +0300
commitd3a398281c6fd1d3672036cb2d63f842d2cb28c5 (patch)
treedd4bd3ca0f36b817e96812825ffaf10d645803f2 /util/system/benchmark/rdtsc/main.cpp
parent72cb13b4aff9bc9cf22e49251bc8fd143f82538f (diff)
downloadydb-d3a398281c6fd1d3672036cb2d63f842d2cb28c5.tar.gz
Restoring authorship annotation for Anton Samokhvalov <pg83@yandex.ru>. Commit 2 of 2.
Diffstat (limited to 'util/system/benchmark/rdtsc/main.cpp')
-rw-r--r--util/system/benchmark/rdtsc/main.cpp120
1 files changed, 60 insertions, 60 deletions
diff --git a/util/system/benchmark/rdtsc/main.cpp b/util/system/benchmark/rdtsc/main.cpp
index 2d09e445ef..8189d10f06 100644
--- a/util/system/benchmark/rdtsc/main.cpp
+++ b/util/system/benchmark/rdtsc/main.cpp
@@ -1,61 +1,61 @@
#include <library/cpp/testing/benchmark/bench.h>
-
-#include <util/system/datetime.h>
-#include <util/generic/xrange.h>
-
-Y_FORCE_INLINE ui64 GetCycleCountLinux() {
- unsigned hi, lo;
- __asm__ __volatile__("lfence\n"
- "rdtsc"
- : "=a"(lo), "=d"(hi));
- return ((unsigned long long)lo) | (((unsigned long long)hi) << 32);
-}
-
-Y_FORCE_INLINE ui64 GetCycleCountAgri1() {
- unsigned hi, lo;
-
- __asm__ __volatile__("rdtscp\n"
- : "=a"(lo), "=d"(hi)::"%rbx", "%rcx");
-
- return ((unsigned long long)lo) | (((unsigned long long)hi) << 32);
-}
-
-Y_FORCE_INLINE ui64 GetCycleCountAgri2() {
- unsigned hi, lo;
- __asm__ __volatile__("rdtscp\n"
- : "=a"(lo), "=d"(hi)::"%rbx", "%rcx");
- /* call cpuid to prevent out of order execution */
- __asm__ __volatile__("mov $0, %%eax\n"
- "cpuid\n" ::
- : "%eax");
-
- return ((unsigned long long)lo) | (((unsigned long long)hi) << 32);
-}
-
-Y_CPU_BENCHMARK(RdtscUtil, iface) {
- for (const auto i : xrange(iface.Iterations())) {
- Y_UNUSED(i);
- Y_DO_NOT_OPTIMIZE_AWAY(GetCycleCount());
- }
-}
-
-Y_CPU_BENCHMARK(RdtscLinux, iface) {
- for (const auto i : xrange(iface.Iterations())) {
- Y_UNUSED(i);
- Y_DO_NOT_OPTIMIZE_AWAY(GetCycleCountLinux());
- }
-}
-
-Y_CPU_BENCHMARK(RdtscAgri1, iface) {
- for (const auto i : xrange(iface.Iterations())) {
- Y_UNUSED(i);
- Y_DO_NOT_OPTIMIZE_AWAY(GetCycleCountAgri1());
- }
-}
-
-Y_CPU_BENCHMARK(RdtscAgri2, iface) {
- for (const auto i : xrange(iface.Iterations())) {
- Y_UNUSED(i);
- Y_DO_NOT_OPTIMIZE_AWAY(GetCycleCountAgri2());
- }
-}
+
+#include <util/system/datetime.h>
+#include <util/generic/xrange.h>
+
+Y_FORCE_INLINE ui64 GetCycleCountLinux() {
+ unsigned hi, lo;
+ __asm__ __volatile__("lfence\n"
+ "rdtsc"
+ : "=a"(lo), "=d"(hi));
+ return ((unsigned long long)lo) | (((unsigned long long)hi) << 32);
+}
+
+Y_FORCE_INLINE ui64 GetCycleCountAgri1() {
+ unsigned hi, lo;
+
+ __asm__ __volatile__("rdtscp\n"
+ : "=a"(lo), "=d"(hi)::"%rbx", "%rcx");
+
+ return ((unsigned long long)lo) | (((unsigned long long)hi) << 32);
+}
+
+Y_FORCE_INLINE ui64 GetCycleCountAgri2() {
+ unsigned hi, lo;
+ __asm__ __volatile__("rdtscp\n"
+ : "=a"(lo), "=d"(hi)::"%rbx", "%rcx");
+ /* call cpuid to prevent out of order execution */
+ __asm__ __volatile__("mov $0, %%eax\n"
+ "cpuid\n" ::
+ : "%eax");
+
+ return ((unsigned long long)lo) | (((unsigned long long)hi) << 32);
+}
+
+Y_CPU_BENCHMARK(RdtscUtil, iface) {
+ for (const auto i : xrange(iface.Iterations())) {
+ Y_UNUSED(i);
+ Y_DO_NOT_OPTIMIZE_AWAY(GetCycleCount());
+ }
+}
+
+Y_CPU_BENCHMARK(RdtscLinux, iface) {
+ for (const auto i : xrange(iface.Iterations())) {
+ Y_UNUSED(i);
+ Y_DO_NOT_OPTIMIZE_AWAY(GetCycleCountLinux());
+ }
+}
+
+Y_CPU_BENCHMARK(RdtscAgri1, iface) {
+ for (const auto i : xrange(iface.Iterations())) {
+ Y_UNUSED(i);
+ Y_DO_NOT_OPTIMIZE_AWAY(GetCycleCountAgri1());
+ }
+}
+
+Y_CPU_BENCHMARK(RdtscAgri2, iface) {
+ for (const auto i : xrange(iface.Iterations())) {
+ Y_UNUSED(i);
+ Y_DO_NOT_OPTIMIZE_AWAY(GetCycleCountAgri2());
+ }
+}