Skip to content

Commit 50347d8

Browse files
committed
leave only dom impl
1 parent 5a9a5e2 commit 50347d8

File tree

5 files changed

+51
-249
lines changed

5 files changed

+51
-249
lines changed

ydb/core/tx/schemeshard/operations/metadata/tiering_rule/object.h

Lines changed: 0 additions & 37 deletions
This file was deleted.

ydb/library/binary_json/benchmark/read.cpp

Lines changed: 0 additions & 94 deletions
This file was deleted.
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#include <benchmark/benchmark.h>
2+
3+
#include <util/random/random.h>
4+
#include <library/cpp/testing/unittest/registar.h>
5+
#include <library/cpp/json/json_value.h>
6+
#include <library/cpp/json/json_writer.h>
7+
8+
#include <ydb/library/binary_json/write.h>
9+
10+
// ya test -r -D BENCHMARK_MAKE_LARGE_PART
11+
#ifndef BENCHMARK_MAKE_LARGE_PART
12+
#define BENCHMARK_MAKE_LARGE_PART 0
13+
#endif
14+
15+
using namespace NKikimr::NBinaryJson;
16+
17+
namespace {
18+
19+
static ui64 seed = 0;
20+
21+
NJson::TJsonValue GetTestJson(ui64 depth = 10, ui64 nChildren = 2) {
22+
NJson::TJsonValue value;
23+
if (depth == 1) {
24+
value.SetValue(NUnitTest::RandomString(10, seed++));
25+
return value;
26+
}
27+
for (ui64 i = 0; i < nChildren; ++i) {
28+
value.InsertValue(NUnitTest::RandomString(10, seed++), GetTestJson(depth - 1));
29+
}
30+
return value;
31+
}
32+
33+
TString GetTestJsonString() {
34+
seed = 42;
35+
return NJson::WriteJson(GetTestJson(2, 100));
36+
}
37+
38+
static void BenchSimdJson(benchmark::State& state) {
39+
TString value = GetTestJsonString();
40+
TStringBuf buf(value);
41+
for (auto _ : state) {
42+
auto result = SerializeToBinaryJson(buf);
43+
benchmark::DoNotOptimize(result);
44+
benchmark::ClobberMemory();
45+
}
46+
}
47+
48+
}
49+
50+
BENCHMARK(BenchWriteSimdJson);

ydb/library/binary_json/benchmark/ya.make

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,12 @@ IF (BENCHMARK_MAKE_LARGE_PART)
1212
ENDIF()
1313

1414
SRCS(
15-
read.cpp
15+
write.cpp
1616
)
1717

1818
PEERDIR(
1919
library/cpp/testing/unittest
2020
ydb/library/binary_json
21-
ydb/library/yql/minikql/dom
22-
ydb/library/yql/minikql/invoke_builtins/llvm14
23-
ydb/library/yql/public/udf/service/exception_policy
24-
ydb/library/yql/core/issue/protos
25-
ydb/library/yql/sql/pg_dummy
2621
)
2722

2823
YQL_LAST_ABI_VERSION()

ydb/library/binary_json/write.cpp

Lines changed: 0 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
#include <contrib/libs/simdjson/include/simdjson/dom/element-inl.h>
66
#include <contrib/libs/simdjson/include/simdjson/dom/object-inl.h>
77
#include <contrib/libs/simdjson/include/simdjson/dom/parser-inl.h>
8-
#include <contrib/libs/simdjson/include/simdjson/ondemand.h>
98
#include <library/cpp/json/json_reader.h>
109
#include <util/generic/algorithm.h>
1110
#include <util/generic/map.h>
@@ -609,92 +608,6 @@ void SimdJsonToJsonIndex(const simdjson::dom::element& value, TBinaryJsonCallbac
609608
}
610609
}
611610
}
612-
613-
template <typename TOnDemandValue>
614-
requires std::is_same_v<TOnDemandValue, simdjson::ondemand::value> || std::is_same_v<TOnDemandValue, simdjson::ondemand::document>
615-
simdjson::error_code SimdJsonToJsonIndex(TOnDemandValue& value, TBinaryJsonCallbacks& callbacks) {
616-
#define RETURN_IF_NOT_SUCCESS(error) \
617-
if (Y_UNLIKELY(error != simdjson::SUCCESS)) { \
618-
return error; \
619-
}
620-
621-
switch (value.type()) {
622-
case simdjson::ondemand::json_type::string: {
623-
std::string_view v;
624-
RETURN_IF_NOT_SUCCESS(value.get(v));
625-
callbacks.OnString(v);
626-
break;
627-
}
628-
case simdjson::ondemand::json_type::boolean: {
629-
bool v;
630-
RETURN_IF_NOT_SUCCESS(value.get(v));
631-
callbacks.OnBoolean(v);
632-
break;
633-
}
634-
case simdjson::ondemand::json_type::number: {
635-
switch (value.get_number_type()) {
636-
case simdjson::fallback::number_type::floating_point_number: {
637-
double v;
638-
RETURN_IF_NOT_SUCCESS(value.get(v));
639-
callbacks.OnDouble(v);
640-
break;
641-
}
642-
case simdjson::fallback::number_type::signed_integer: {
643-
i64 v;
644-
RETURN_IF_NOT_SUCCESS(value.get(v));
645-
callbacks.OnInteger(v);
646-
break;
647-
}
648-
case simdjson::fallback::number_type::unsigned_integer: {
649-
ui64 v;
650-
RETURN_IF_NOT_SUCCESS(value.get(v));
651-
callbacks.OnUInteger(v);
652-
break;
653-
}
654-
case simdjson::fallback::number_type::big_integer:
655-
return simdjson::NUMBER_OUT_OF_RANGE;
656-
}
657-
break;
658-
}
659-
case simdjson::ondemand::json_type::null:
660-
callbacks.OnNull();
661-
break;
662-
case simdjson::ondemand::json_type::array: {
663-
callbacks.OnOpenArray();
664-
665-
simdjson::ondemand::array v;
666-
RETURN_IF_NOT_SUCCESS(value.get(v));
667-
for (auto item : v) {
668-
RETURN_IF_NOT_SUCCESS(item.error());
669-
RETURN_IF_NOT_SUCCESS(SimdJsonToJsonIndex(item.value_unsafe(), callbacks));
670-
}
671-
672-
callbacks.OnCloseArray();
673-
break;
674-
}
675-
case simdjson::ondemand::json_type::object: {
676-
callbacks.OnOpenMap();
677-
678-
simdjson::ondemand::object v;
679-
RETURN_IF_NOT_SUCCESS(value.get(v));
680-
for (auto item : v) {
681-
RETURN_IF_NOT_SUCCESS(item.error());
682-
auto& keyValue = item.value_unsafe();
683-
const auto key = keyValue.unescaped_key();
684-
RETURN_IF_NOT_SUCCESS(key.error());
685-
callbacks.OnMapKey(key.value_unsafe());
686-
RETURN_IF_NOT_SUCCESS(SimdJsonToJsonIndex(keyValue.value(), callbacks));
687-
}
688-
689-
callbacks.OnCloseMap();
690-
break;
691-
}
692-
}
693-
694-
return simdjson::SUCCESS;
695-
696-
#undef RETURN_IF_NOT_SUCCESS
697-
}
698611
}
699612

700613
TMaybe<TBinaryJson> SerializeToBinaryJsonImpl(const TStringBuf json) {
@@ -713,31 +626,6 @@ TMaybe<TBinaryJson> SerializeToBinaryJson(const TStringBuf json) {
713626
return SerializeToBinaryJsonImpl(json);
714627
}
715628

716-
TMaybe<TBinaryJson> SerializeToBinaryJsonOndemand(const TStringBuf json) {
717-
const simdjson::padded_string paddedJson(json);
718-
simdjson::ondemand::parser parser;
719-
auto doc = parser.iterate(paddedJson);
720-
if (doc.error() != simdjson::SUCCESS) {
721-
return false;
722-
}
723-
TBinaryJsonCallbacks callbacks(/* throwException */ false);
724-
if (SimdJsonToJsonIndex(doc.value_unsafe(), callbacks) != simdjson::SUCCESS) {
725-
return false;
726-
}
727-
TBinaryJsonSerializer serializer(std::move(callbacks).GetResult());
728-
return std::move(serializer).Serialize();
729-
}
730-
731-
TMaybe<TBinaryJson> SerializeToBinaryJsonRapidjson(const TStringBuf json) {
732-
TMemoryInput input(json.data(), json.size());
733-
TBinaryJsonCallbacks callbacks(/* throwException */ false);
734-
if (!ReadJson(&input, &callbacks)) {
735-
return Nothing();
736-
}
737-
TBinaryJsonSerializer serializer(std::move(callbacks).GetResult());
738-
return std::move(serializer).Serialize();
739-
}
740-
741629
TBinaryJson SerializeToBinaryJson(const NUdf::TUnboxedValue& value) {
742630
TBinaryJsonCallbacks callbacks(/* throwException */ false);
743631
DomToJsonIndex(value, callbacks);

0 commit comments

Comments
 (0)