aboutsummaryrefslogtreecommitdiffhomepage
path: root/benchmark
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2021-08-22 10:25:11 +0300
committerlevlam <levlam@telegram.org>2021-08-22 10:25:11 +0300
commitf9b71104d41205abb91d248b0eab467bc1b47ac9 (patch)
tree734b652d146d1452cd558cb48578d4aaa93590cd /benchmark
parente0f80ca008f39254b066cdb9ba0c6591321d5f4d (diff)
Add DuplicateChecker benchmark with repeated message_id.
Diffstat (limited to 'benchmark')
-rw-r--r--benchmark/bench_misc.cpp28
1 files changed, 27 insertions, 1 deletions
diff --git a/benchmark/bench_misc.cpp b/benchmark/bench_misc.cpp
index 914a6c2b0..8175b5768 100644
--- a/benchmark/bench_misc.cpp
+++ b/benchmark/bench_misc.cpp
@@ -450,7 +450,7 @@ class MessageIdDuplicateCheckerOld {
std::set<td::int64> saved_message_ids_;
};
-template<size_t MAX_SAVED_MESSAGE_IDS>
+template <size_t MAX_SAVED_MESSAGE_IDS>
class MessageIdDuplicateCheckerNew {
public:
static td::string get_description() {
@@ -544,13 +544,39 @@ class DuplicateCheckerBench final : public td::Benchmark {
}
};
+template <class T>
+class DuplicateCheckerBenchRepeat final : public td::Benchmark {
+ td::string get_description() const final {
+ return PSTRING() << "DuplicateCheckerBenchRepeat" << T::get_description();
+ }
+ void run(int n) final {
+ T checker_;
+ for (int i = 0; i < n; i++) {
+ auto iter = i >> 10;
+ auto pos = i - (iter << 10);
+ if (pos < 768) {
+ checker_.check(iter * 768 + pos).ensure();
+ } else {
+ checker_.check(iter * 768 + pos - 256).ensure_error();
+ }
+ }
+ }
+};
+
int main() {
SET_VERBOSITY_LEVEL(VERBOSITY_NAME(DEBUG));
+ td::bench(DuplicateCheckerBenchRepeat<MessageIdDuplicateCheckerOld>());
+ td::bench(DuplicateCheckerBenchRepeat<MessageIdDuplicateCheckerNew<1000>>());
+ td::bench(DuplicateCheckerBenchRepeat<MessageIdDuplicateCheckerNewOther>());
+ td::bench(DuplicateCheckerBenchRepeat<MessageIdDuplicateCheckerNewSimple>());
+ td::bench(DuplicateCheckerBenchRepeat<MessageIdDuplicateCheckerNew<300>>());
+
td::bench(DuplicateCheckerBench<MessageIdDuplicateCheckerOld>());
td::bench(DuplicateCheckerBench<MessageIdDuplicateCheckerNew<1000>>());
td::bench(DuplicateCheckerBench<MessageIdDuplicateCheckerNewOther>());
td::bench(DuplicateCheckerBench<MessageIdDuplicateCheckerNewSimple>());
+ td::bench(DuplicateCheckerBench<MessageIdDuplicateCheckerNew<300>>());
td::bench(DuplicateCheckerBench<MessageIdDuplicateCheckerNew<100>>());
td::bench(DuplicateCheckerBench<MessageIdDuplicateCheckerNew<10>>());