aboutsummaryrefslogtreecommitdiffhomepage
path: root/tdutils/test
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2023-08-08 03:13:43 +0300
committerlevlam <levlam@telegram.org>2023-08-08 03:13:43 +0300
commitc8aa72990522989e004c2d99590b080a646a895e (patch)
tree93deffc49200f408858ca699c977c0e94ac6ca85 /tdutils/test
parenteaa77f76e5c3981ab253b0ec50ed23b0e141cac6 (diff)
Add json_string_decode benchmark.
Diffstat (limited to 'tdutils/test')
-rw-r--r--tdutils/test/json.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/tdutils/test/json.cpp b/tdutils/test/json.cpp
index 110c2c545..d86935463 100644
--- a/tdutils/test/json.cpp
+++ b/tdutils/test/json.cpp
@@ -4,9 +4,11 @@
// 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/utils/benchmark.h"
#include "td/utils/common.h"
#include "td/utils/JsonBuilder.h"
#include "td/utils/logging.h"
+#include "td/utils/Parser.h"
#include "td/utils/Slice.h"
#include "td/utils/StringBuilder.h"
#include "td/utils/tests.h"
@@ -338,3 +340,28 @@ TEST(JSON, json_object_get_field) {
ASSERT_EQ(object.get_optional_string_field("int").ok(), "1");
ASSERT_EQ(object.get_optional_string_field("int2").ok(), "2");
}
+
+class JsonStringDecodeBenchmark final : public td::Benchmark {
+ td::string str_;
+
+ public:
+ explicit JsonStringDecodeBenchmark(td::string str) : str_('"' + str + '"') {
+ }
+
+ td::string get_description() const final {
+ return td::string("JsonStringDecodeBenchmark") + str_.substr(1, 5);
+ }
+
+ void run(int n) final {
+ for (int i = 0; i < n; i++) {
+ auto str = str_;
+ td::Parser parser(str);
+ td::json_string_decode(parser);
+ }
+ }
+};
+
+TEST(JSON, bench_json_string_decode) {
+ td::bench(JsonStringDecodeBenchmark(td::string(1000, 'a')));
+ td::bench(JsonStringDecodeBenchmark(td::string(1000, '\\')));
+}