aboutsummaryrefslogtreecommitdiffhomepage
path: root/benchmark
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2021-08-23 11:17:25 +0300
committerlevlam <levlam@telegram.org>2021-08-23 11:17:25 +0300
commitddb3c56ddb118d4ac71237d516cf6e05c0a73157 (patch)
tree909e70e4bca36408f1f10dde6afb7105b113a848 /benchmark
parent828e1e22a0531e84abd65a6d0533083ea0a137f6 (diff)
Add one more MessageIdDuplicateChecker benchmark.
Diffstat (limited to 'benchmark')
-rw-r--r--benchmark/bench_misc.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/benchmark/bench_misc.cpp b/benchmark/bench_misc.cpp
index aeec2232a..f0a4bea06 100644
--- a/benchmark/bench_misc.cpp
+++ b/benchmark/bench_misc.cpp
@@ -633,9 +633,28 @@ class DuplicateCheckerBenchReverse final : public td::Benchmark {
}
};
+template <class T>
+class DuplicateCheckerBenchEvenOdd final : public td::Benchmark {
+ td::string get_description() const final {
+ return PSTRING() << "DuplicateCheckerBenchEvenOdd" << T::get_description();
+ }
+ void run(int n) final {
+ T checker_;
+ for (int i = 0; i < n; i++) {
+ auto pos = i & 255;
+ checker_.check(i - pos + (pos * 2) % 256 + (pos * 2) / 256).ensure();
+ }
+ }
+};
+
int main() {
SET_VERBOSITY_LEVEL(VERBOSITY_NAME(DEBUG));
+ td::bench(DuplicateCheckerBenchEvenOdd<MessageIdDuplicateCheckerNew<1000>>());
+ td::bench(DuplicateCheckerBenchEvenOdd<MessageIdDuplicateCheckerNew<300>>());
+ td::bench(DuplicateCheckerBenchEvenOdd<MessageIdDuplicateCheckerArray<1000>>());
+ td::bench(DuplicateCheckerBenchEvenOdd<MessageIdDuplicateCheckerArray<300>>());
+
td::bench(DuplicateCheckerBenchReverse<MessageIdDuplicateCheckerNew<1000>>());
td::bench(DuplicateCheckerBenchReverse<MessageIdDuplicateCheckerNew<300>>());
td::bench(DuplicateCheckerBenchReverse<MessageIdDuplicateCheckerArray<1000>>());