summaryrefslogtreecommitdiff
path: root/protocols/Telegram/tdlib/td/benchmark/bench_tddb.cpp
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2022-11-30 17:48:47 +0300
committerGeorge Hazan <ghazan@miranda.im>2022-11-30 17:48:47 +0300
commit0ece30dc7c0e34b4c5911969b8fa99c33c6d023c (patch)
tree671325d3fec09b999411e4e3ab84ef8259261818 /protocols/Telegram/tdlib/td/benchmark/bench_tddb.cpp
parent46c53ffc6809c67e4607e99951a2846c382b63b2 (diff)
Telegram: update for TDLIB
Diffstat (limited to 'protocols/Telegram/tdlib/td/benchmark/bench_tddb.cpp')
-rw-r--r--protocols/Telegram/tdlib/td/benchmark/bench_tddb.cpp87
1 files changed, 46 insertions, 41 deletions
diff --git a/protocols/Telegram/tdlib/td/benchmark/bench_tddb.cpp b/protocols/Telegram/tdlib/td/benchmark/bench_tddb.cpp
index 91e957a501..c3298327e5 100644
--- a/protocols/Telegram/tdlib/td/benchmark/bench_tddb.cpp
+++ b/protocols/Telegram/tdlib/td/benchmark/bench_tddb.cpp
@@ -1,70 +1,78 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2018
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
#include "td/telegram/DialogId.h"
+#include "td/telegram/MessageDb.h"
#include "td/telegram/MessageId.h"
-#include "td/telegram/MessagesDb.h"
+#include "td/telegram/NotificationId.h"
+#include "td/telegram/ServerMessageId.h"
#include "td/telegram/UserId.h"
+#include "td/db/DbKey.h"
+#include "td/db/SqliteConnectionSafe.h"
+#include "td/db/SqliteDb.h"
+
+#include "td/actor/ConcurrentScheduler.h"
+
#include "td/utils/benchmark.h"
#include "td/utils/buffer.h"
#include "td/utils/common.h"
#include "td/utils/logging.h"
+#include "td/utils/Promise.h"
#include "td/utils/Random.h"
#include "td/utils/Status.h"
#include <memory>
-namespace td {
-
-static Status init_db(SqliteDb &db) {
+static td::Status init_db(td::SqliteDb &db) {
TRY_STATUS(db.exec("PRAGMA encoding=\"UTF-8\""));
TRY_STATUS(db.exec("PRAGMA synchronous=NORMAL"));
TRY_STATUS(db.exec("PRAGMA journal_mode=WAL"));
TRY_STATUS(db.exec("PRAGMA temp_store=MEMORY"));
TRY_STATUS(db.exec("PRAGMA secure_delete=1"));
- return Status::OK();
+ return td::Status::OK();
}
-class MessagesDbBench : public Benchmark {
+class MessageDbBench final : public td::Benchmark {
public:
- string get_description() const override {
- return "MessagesDb";
+ td::string get_description() const final {
+ return "MessageDb";
}
- void start_up() override {
+ void start_up() final {
LOG(ERROR) << "START UP";
do_start_up().ensure();
scheduler_->start();
}
- void run(int n) override {
- auto guard = scheduler_->get_current_guard();
+ void run(int n) final {
+ auto guard = scheduler_->get_main_guard();
for (int i = 0; i < n; i += 20) {
- auto dialog_id = DialogId{UserId{Random::fast(1, 100)}};
- auto message_id_raw = Random::fast(1, 100000);
+ auto dialog_id = td::DialogId(td::UserId(static_cast<td::int64>(td::Random::fast(1, 100))));
+ auto message_id_raw = td::Random::fast(1, 100000);
for (int j = 0; j < 20; j++) {
- auto message_id = MessageId{ServerMessageId{message_id_raw + j}};
- auto unique_message_id = ServerMessageId{i + 1};
- auto sender_user_id = UserId{Random::fast(1, 1000)};
+ auto message_id = td::MessageId{td::ServerMessageId{message_id_raw + j}};
+ auto unique_message_id = td::ServerMessageId{i + 1};
+ auto sender_dialog_id = td::DialogId(td::UserId(static_cast<td::int64>(td::Random::fast(1, 1000))));
auto random_id = i + 1;
auto ttl_expires_at = 0;
- auto data = BufferSlice(Random::fast(100, 299));
+ auto data = td::BufferSlice(td::Random::fast(100, 299));
// use async on same thread.
- messages_db_async_->add_message({dialog_id, message_id}, unique_message_id, sender_user_id, random_id,
- ttl_expires_at, 0, 0, "", std::move(data), Promise<>());
+ message_db_async_->add_message({dialog_id, message_id}, unique_message_id, sender_dialog_id, random_id,
+ ttl_expires_at, 0, 0, "", td::NotificationId(), td::MessageId(), std::move(data),
+ td::Promise<>());
}
}
}
- void tear_down() override {
+ void tear_down() final {
scheduler_->run_main(0.1);
{
- auto guard = scheduler_->get_current_guard();
+ auto guard = scheduler_->get_main_guard();
sql_connection_.reset();
- messages_db_sync_safe_.reset();
- messages_db_async_.reset();
+ message_db_sync_safe_.reset();
+ message_db_async_.reset();
}
scheduler_->finish();
@@ -73,36 +81,33 @@ class MessagesDbBench : public Benchmark {
}
private:
- std::unique_ptr<td::ConcurrentScheduler> scheduler_;
- std::shared_ptr<SqliteConnectionSafe> sql_connection_;
- std::shared_ptr<MessagesDbSyncSafeInterface> messages_db_sync_safe_;
- std::shared_ptr<MessagesDbAsyncInterface> messages_db_async_;
+ td::unique_ptr<td::ConcurrentScheduler> scheduler_;
+ std::shared_ptr<td::SqliteConnectionSafe> sql_connection_;
+ std::shared_ptr<td::MessageDbSyncSafeInterface> message_db_sync_safe_;
+ std::shared_ptr<td::MessageDbAsyncInterface> message_db_async_;
- Status do_start_up() {
- scheduler_ = std::make_unique<ConcurrentScheduler>();
- scheduler_->init(1);
+ td::Status do_start_up() {
+ scheduler_ = td::make_unique<td::ConcurrentScheduler>(1, 0);
- auto guard = scheduler_->get_current_guard();
+ auto guard = scheduler_->get_main_guard();
- string sql_db_name = "testdb.sqlite";
- sql_connection_ = std::make_shared<SqliteConnectionSafe>(sql_db_name);
+ td::string sql_db_name = "testdb.sqlite";
+ sql_connection_ = std::make_shared<td::SqliteConnectionSafe>(sql_db_name, td::DbKey::empty());
auto &db = sql_connection_->get();
TRY_STATUS(init_db(db));
db.exec("BEGIN TRANSACTION").ensure();
// version == 0 ==> db will be destroyed
- TRY_STATUS(init_messages_db(db, 0));
+ TRY_STATUS(init_message_db(db, 0));
db.exec("COMMIT TRANSACTION").ensure();
- messages_db_sync_safe_ = create_messages_db_sync(sql_connection_);
- messages_db_async_ = create_messages_db_async(messages_db_sync_safe_, 0);
- return Status::OK();
+ message_db_sync_safe_ = td::create_message_db_sync(sql_connection_);
+ message_db_async_ = td::create_message_db_async(message_db_sync_safe_, 0);
+ return td::Status::OK();
}
};
-} // namespace td
int main() {
SET_VERBOSITY_LEVEL(VERBOSITY_NAME(WARNING));
- bench(td::MessagesDbBench());
- return 0;
+ td::bench(MessageDbBench());
}