Add to_string benchmark.

This commit is contained in:
levlam 2023-09-29 13:00:52 +03:00
parent 97ec3eacf4
commit 69b46d846c

View File

@ -4,6 +4,7 @@
// 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/td_api.h"
#include "td/telegram/telegram_api.h"
#include "td/telegram/telegram_api.hpp"
@ -50,7 +51,7 @@ class F {
}
};
BENCH(Call, "TL Call") {
BENCH(TlCall, "TL Call") {
td::tl_object_ptr<td::telegram_api::Function> x = td::make_tl_object<td::telegram_api::account_getWallPapers>(0);
td::uint32 res = 0;
F f(res);
@ -60,6 +61,49 @@ BENCH(Call, "TL Call") {
td::do_not_optimize_away(res);
}
static td::td_api::object_ptr<td::td_api::file> get_file_object() {
return td::td_api::make_object<td::td_api::file>(
12345, 123456, 123456,
td::td_api::make_object<td::td_api::localFile>(
"/android/data/0/data/org.telegram.data/files/photos/12345678901234567890_123.jpg", true, true, false, true,
0, 123456, 123456),
td::td_api::make_object<td::td_api::remoteFile>("abacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacaba",
"abacabadabacabaeabacabadabacaba", false, true, 123456));
}
BENCH(TlToStringUpdateFile, "TL to_string updateFile") {
auto x = td::td_api::make_object<td::td_api::updateFile>(get_file_object());
td::uint32 res = 0;
for (int i = 0; i < n; i++) {
res += to_string(x).size();
}
td::do_not_optimize_away(res);
}
BENCH(TlToStringMessage, "TL to_string message") {
auto x = td::td_api::make_object<td::td_api::message>();
x->id_ = 123456000111;
x->sender_id_ = td::td_api::make_object<td::td_api::messageSenderUser>(123456000112);
x->chat_id_ = 123456000112;
x->sending_state_ = td::td_api::make_object<td::td_api::messageSendingStatePending>(0);
x->date_ = 1699999999;
auto photo = td::td_api::make_object<td::td_api::photo>();
for (int i = 0; i < 4; i++) {
photo->sizes_.push_back(td::td_api::make_object<td::td_api::photoSize>(
"a", get_file_object(), 160, 160,
td::vector<td::int32>{10000, 20000, 30000, 50000, 70000, 90000, 120000, 150000, 180000, 220000}));
}
x->content_ = td::td_api::make_object<td::td_api::messagePhoto>(
std::move(photo), td::td_api::make_object<td::td_api::formattedText>(), false, false);
td::uint32 res = 0;
for (int i = 0; i < n; i++) {
res += to_string(x).size();
}
td::do_not_optimize_away(res);
}
#if !TD_EVENTFD_UNSUPPORTED
BENCH(EventFd, "EventFd") {
td::EventFd fd;
@ -635,6 +679,9 @@ class DuplicateCheckerBenchEvenOdd final : public td::Benchmark {
int main() {
SET_VERBOSITY_LEVEL(VERBOSITY_NAME(DEBUG));
td::bench(TlToStringUpdateFileBench());
td::bench(TlToStringMessageBench());
td::bench(DuplicateCheckerBenchEvenOdd<IdDuplicateCheckerNew<1000>>());
td::bench(DuplicateCheckerBenchEvenOdd<IdDuplicateCheckerNew<300>>());
td::bench(DuplicateCheckerBenchEvenOdd<IdDuplicateCheckerArray<1000>>());
@ -691,7 +738,7 @@ int main() {
td::bench(CreateFileBench());
td::bench(PwriteBench());
td::bench(CallBench());
td::bench(TlCallBench());
#if !TD_THREAD_UNSUPPORTED
td::bench(ThreadNewBench());
#endif