Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit9f45a68

Browse files
committed
Improve branch prediction
1 parent34a01ec commit9f45a68

24 files changed

+340
-340
lines changed

‎include/simdjson/common_defs.h‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ namespace std {
263263
#undef SIMDJSON_HAS_STRING_VIEW// We are not going to need this macro anymore.
264264

265265
/// If EXPR is an error, returns it.
266-
#defineSIMDJSON_TRY(EXPR) {auto _err = (EXPR);if (_err) {return _err; } }
266+
#defineSIMDJSON_TRY(EXPR) {auto _err = (EXPR);if (simdjson_unlikely(_err)) {return _err; } }
267267

268268
// Unless the programmer has already set SIMDJSON_DEVELOPMENT_CHECKS,
269269
// we want to set it under debug builds. We detect a debug build

‎include/simdjson/dom/array-inl.h‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,26 +26,26 @@ simdjson_inline simdjson_result<dom::array>::simdjson_result(error_code error) n
2626
#if SIMDJSON_EXCEPTIONS
2727

2828
inline dom::array::iterator simdjson_result<dom::array>::begin()constnoexcept(false) {
29-
if (error()) {throwsimdjson_error(error()); }
29+
if (simdjson_unlikely(error())) {throwsimdjson_error(error()); }
3030
return first.begin();
3131
}
3232
inline dom::array::iterator simdjson_result<dom::array>::end()constnoexcept(false) {
33-
if (error()) {throwsimdjson_error(error()); }
33+
if (simdjson_unlikely(error())) {throwsimdjson_error(error()); }
3434
return first.end();
3535
}
3636
inlinesize_t simdjson_result<dom::array>::size()constnoexcept(false) {
37-
if (error()) {throwsimdjson_error(error()); }
37+
if (simdjson_unlikely(error())) {throwsimdjson_error(error()); }
3838
return first.size();
3939
}
4040

4141
#endif// SIMDJSON_EXCEPTIONS
4242

4343
inline simdjson_result<dom::element> simdjson_result<dom::array>::at_pointer(std::string_view json_pointer)constnoexcept {
44-
if (error()) {returnerror(); }
44+
if (simdjson_unlikely(error())) {returnerror(); }
4545
return first.at_pointer(json_pointer);
4646
}
4747
inline simdjson_result<dom::element> simdjson_result<dom::array>::at(size_t index)constnoexcept {
48-
if (error()) {returnerror(); }
48+
if (simdjson_unlikely(error())) {returnerror(); }
4949
return first.at(index);
5050
}
5151

‎include/simdjson/dom/document_stream-inl.h‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -320,11 +320,11 @@ simdjson_inline simdjson_result<dom::document_stream>::simdjson_result(dom::docu
320320

321321
#if SIMDJSON_EXCEPTIONS
322322
simdjson_inline dom::document_stream::iterator simdjson_result<dom::document_stream>::begin()noexcept(false) {
323-
if (error()) {throwsimdjson_error(error()); }
323+
if (simdjson_unlikely(error())) {throwsimdjson_error(error()); }
324324
return first.begin();
325325
}
326326
simdjson_inline dom::document_stream::iterator simdjson_result<dom::document_stream>::end()noexcept(false) {
327-
if (error()) {throwsimdjson_error(error()); }
327+
if (simdjson_unlikely(error())) {throwsimdjson_error(error()); }
328328
return first.end();
329329
}
330330
#else// SIMDJSON_EXCEPTIONS

‎include/simdjson/dom/element-inl.h‎

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ simdjson_inline simdjson_result<dom::element>::simdjson_result(dom::element &&va
2525
simdjson_inline simdjson_result<dom::element>::simdjson_result(error_code error)noexcept
2626
: internal::simdjson_result_base<dom::element>(error) {}
2727
inline simdjson_result<dom::element_type> simdjson_result<dom::element>::type()constnoexcept {
28-
if (error()) {returnerror(); }
28+
if (simdjson_unlikely(error())) {returnerror(); }
2929
return first.type();
3030
}
3131

@@ -35,49 +35,49 @@ simdjson_inline bool simdjson_result<dom::element>::is() const noexcept {
3535
}
3636
template<typename T>
3737
simdjson_inline simdjson_result<T> simdjson_result<dom::element>::get()constnoexcept {
38-
if (error()) {returnerror(); }
38+
if (simdjson_unlikely(error())) {returnerror(); }
3939
return first.get<T>();
4040
}
4141
template<typename T>
4242
simdjson_warn_unused simdjson_inline error_code simdjson_result<dom::element>::get(T &value)constnoexcept {
43-
if (error()) {returnerror(); }
43+
if (simdjson_unlikely(error())) {returnerror(); }
4444
return first.get<T>(value);
4545
}
4646

4747
simdjson_inline simdjson_result<dom::array> simdjson_result<dom::element>::get_array()constnoexcept {
48-
if (error()) {returnerror(); }
48+
if (simdjson_unlikely(error())) {returnerror(); }
4949
return first.get_array();
5050
}
5151
simdjson_inline simdjson_result<dom::object> simdjson_result<dom::element>::get_object()constnoexcept {
52-
if (error()) {returnerror(); }
52+
if (simdjson_unlikely(error())) {returnerror(); }
5353
return first.get_object();
5454
}
5555
simdjson_inline simdjson_result<constchar *> simdjson_result<dom::element>::get_c_str()constnoexcept {
56-
if (error()) {returnerror(); }
56+
if (simdjson_unlikely(error())) {returnerror(); }
5757
return first.get_c_str();
5858
}
5959
simdjson_inline simdjson_result<size_t> simdjson_result<dom::element>::get_string_length()constnoexcept {
60-
if (error()) {returnerror(); }
60+
if (simdjson_unlikely(error())) {returnerror(); }
6161
return first.get_string_length();
6262
}
6363
simdjson_inline simdjson_result<std::string_view> simdjson_result<dom::element>::get_string()constnoexcept {
64-
if (error()) {returnerror(); }
64+
if (simdjson_unlikely(error())) {returnerror(); }
6565
return first.get_string();
6666
}
6767
simdjson_inline simdjson_result<int64_t> simdjson_result<dom::element>::get_int64()constnoexcept {
68-
if (error()) {returnerror(); }
68+
if (simdjson_unlikely(error())) {returnerror(); }
6969
return first.get_int64();
7070
}
7171
simdjson_inline simdjson_result<uint64_t> simdjson_result<dom::element>::get_uint64()constnoexcept {
72-
if (error()) {returnerror(); }
72+
if (simdjson_unlikely(error())) {returnerror(); }
7373
return first.get_uint64();
7474
}
7575
simdjson_inline simdjson_result<double> simdjson_result<dom::element>::get_double()constnoexcept {
76-
if (error()) {returnerror(); }
76+
if (simdjson_unlikely(error())) {returnerror(); }
7777
return first.get_double();
7878
}
7979
simdjson_inline simdjson_result<bool> simdjson_result<dom::element>::get_bool()constnoexcept {
80-
if (error()) {returnerror(); }
80+
if (simdjson_unlikely(error())) {returnerror(); }
8181
return first.get_bool();
8282
}
8383

@@ -111,37 +111,37 @@ simdjson_inline bool simdjson_result<dom::element>::is_null() const noexcept {
111111
}
112112

113113
simdjson_inline simdjson_result<dom::element> simdjson_result<dom::element>::operator[](std::string_view key)constnoexcept {
114-
if (error()) {returnerror(); }
114+
if (simdjson_unlikely(error())) {returnerror(); }
115115
return first[key];
116116
}
117117
simdjson_inline simdjson_result<dom::element> simdjson_result<dom::element>::operator[](constchar *key)constnoexcept {
118-
if (error()) {returnerror(); }
118+
if (simdjson_unlikely(error())) {returnerror(); }
119119
return first[key];
120120
}
121121
simdjson_inline simdjson_result<dom::element> simdjson_result<dom::element>::at_pointer(const std::string_view json_pointer)constnoexcept {
122-
if (error()) {returnerror(); }
122+
if (simdjson_unlikely(error())) {returnerror(); }
123123
return first.at_pointer(json_pointer);
124124
}
125125
#ifndef SIMDJSON_DISABLE_DEPRECATED_API
126126
[[deprecated("For standard compliance, use at_pointer instead, and prefix your pointers with a slash '/', see RFC6901")]]
127127
simdjson_inline simdjson_result<dom::element> simdjson_result<dom::element>::at(const std::string_view json_pointer)constnoexcept {
128128
SIMDJSON_PUSH_DISABLE_WARNINGS
129129
SIMDJSON_DISABLE_DEPRECATED_WARNING
130-
if (error()) {returnerror(); }
130+
if (simdjson_unlikely(error())) {returnerror(); }
131131
return first.at(json_pointer);
132132
SIMDJSON_POP_DISABLE_WARNINGS
133133
}
134134
#endif// SIMDJSON_DISABLE_DEPRECATED_API
135135
simdjson_inline simdjson_result<dom::element> simdjson_result<dom::element>::at(size_t index)constnoexcept {
136-
if (error()) {returnerror(); }
136+
if (simdjson_unlikely(error())) {returnerror(); }
137137
return first.at(index);
138138
}
139139
simdjson_inline simdjson_result<dom::element> simdjson_result<dom::element>::at_key(std::string_view key)constnoexcept {
140-
if (error()) {returnerror(); }
140+
if (simdjson_unlikely(error())) {returnerror(); }
141141
return first.at_key(key);
142142
}
143143
simdjson_inline simdjson_result<dom::element> simdjson_result<dom::element>::at_key_case_insensitive(std::string_view key)constnoexcept {
144-
if (error()) {returnerror(); }
144+
if (simdjson_unlikely(error())) {returnerror(); }
145145
return first.at_key_case_insensitive(key);
146146
}
147147

@@ -173,11 +173,11 @@ simdjson_inline simdjson_result<dom::element>::operator dom::object() const noex
173173
}
174174

175175
simdjson_inline dom::array::iterator simdjson_result<dom::element>::begin()constnoexcept(false) {
176-
if (error()) {throwsimdjson_error(error()); }
176+
if (simdjson_unlikely(error())) {throwsimdjson_error(error()); }
177177
return first.begin();
178178
}
179179
simdjson_inline dom::array::iterator simdjson_result<dom::element>::end()constnoexcept(false) {
180-
if (error()) {throwsimdjson_error(error()); }
180+
if (simdjson_unlikely(error())) {throwsimdjson_error(error()); }
181181
return first.end();
182182
}
183183

‎include/simdjson/dom/object-inl.h‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,38 +23,38 @@ simdjson_inline simdjson_result<dom::object>::simdjson_result(error_code error)
2323
: internal::simdjson_result_base<dom::object>(error) {}
2424

2525
inline simdjson_result<dom::element> simdjson_result<dom::object>::operator[](std::string_view key)constnoexcept {
26-
if (error()) {returnerror(); }
26+
if (simdjson_unlikely(error())) {returnerror(); }
2727
return first[key];
2828
}
2929
inline simdjson_result<dom::element> simdjson_result<dom::object>::operator[](constchar *key)constnoexcept {
30-
if (error()) {returnerror(); }
30+
if (simdjson_unlikely(error())) {returnerror(); }
3131
return first[key];
3232
}
3333
inline simdjson_result<dom::element> simdjson_result<dom::object>::at_pointer(std::string_view json_pointer)constnoexcept {
34-
if (error()) {returnerror(); }
34+
if (simdjson_unlikely(error())) {returnerror(); }
3535
return first.at_pointer(json_pointer);
3636
}
3737
inline simdjson_result<dom::element> simdjson_result<dom::object>::at_key(std::string_view key)constnoexcept {
38-
if (error()) {returnerror(); }
38+
if (simdjson_unlikely(error())) {returnerror(); }
3939
return first.at_key(key);
4040
}
4141
inline simdjson_result<dom::element> simdjson_result<dom::object>::at_key_case_insensitive(std::string_view key)constnoexcept {
42-
if (error()) {returnerror(); }
42+
if (simdjson_unlikely(error())) {returnerror(); }
4343
return first.at_key_case_insensitive(key);
4444
}
4545

4646
#if SIMDJSON_EXCEPTIONS
4747

4848
inline dom::object::iterator simdjson_result<dom::object>::begin()constnoexcept(false) {
49-
if (error()) {throwsimdjson_error(error()); }
49+
if (simdjson_unlikely(error())) {throwsimdjson_error(error()); }
5050
return first.begin();
5151
}
5252
inline dom::object::iterator simdjson_result<dom::object>::end()constnoexcept(false) {
53-
if (error()) {throwsimdjson_error(error()); }
53+
if (simdjson_unlikely(error())) {throwsimdjson_error(error()); }
5454
return first.end();
5555
}
5656
inlinesize_t simdjson_result<dom::object>::size()constnoexcept(false) {
57-
if (error()) {throwsimdjson_error(error()); }
57+
if (simdjson_unlikely(error())) {throwsimdjson_error(error()); }
5858
return first.size();
5959
}
6060

‎include/simdjson/dom/parser-inl.h‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ inline error_code parser::allocate(size_t capacity, size_t max_depth) noexcept {
206206
}else {
207207
err =simdjson::get_active_implementation()->create_dom_parser_implementation(capacity, max_depth, implementation);
208208
}
209-
if (err) {return err; }
209+
if (simdjson_unlikely(err)) {return err; }
210210
return SUCCESS;
211211
}
212212

@@ -238,8 +238,8 @@ inline error_code parser::ensure_capacity(document& target_document, size_t desi
238238
}
239239
error_code err1 = target_document.capacity() < desired_capacity ? target_document.allocate(desired_capacity) : SUCCESS;
240240
error_code err2 =capacity() < desired_capacity ?allocate(desired_capacity,max_depth()) : SUCCESS;
241-
if(err1 != SUCCESS) {return error = err1; }
242-
if(err2 != SUCCESS) {return error = err2; }
241+
if(simdjson_unlikely(err1 != SUCCESS)) {return error = err1; }
242+
if(simdjson_unlikely(err2 != SUCCESS)) {return error = err2; }
243243
}
244244
return SUCCESS;
245245
}

‎include/simdjson/error-inl.h‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ simdjson_inline error_code simdjson_result_base<T>::error() const noexcept {
6666

6767
template<typename T>
6868
simdjson_inline T& simdjson_result_base<T>::value() &noexcept(false) {
69-
if (error()) {throwsimdjson_error(error()); }
69+
if (simdjson_unlikely(error())) {throwsimdjson_error(error()); }
7070
returnthis->first;
7171
}
7272

@@ -77,7 +77,7 @@ simdjson_inline T&& simdjson_result_base<T>::value() && noexcept(false) {
7777

7878
template<typename T>
7979
simdjson_inline T&& simdjson_result_base<T>::take_value() &&noexcept(false) {
80-
if (error()) {throwsimdjson_error(error()); }
80+
if (simdjson_unlikely(error())) {throwsimdjson_error(error()); }
8181
return std::forward<T>(this->first);
8282
}
8383

‎include/simdjson/generic/implementation_simdjson_result_base-inl.h‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ simdjson_inline error_code implementation_simdjson_result_base<T>::error() const
3737

3838
template<typename T>
3939
simdjson_inline T& implementation_simdjson_result_base<T>::value() &noexcept(false) {
40-
if (error()) {throwsimdjson_error(error()); }
40+
if (simdjson_unlikely(error())) {throwsimdjson_error(error()); }
4141
returnthis->first;
4242
}
4343

@@ -48,7 +48,7 @@ simdjson_inline T&& implementation_simdjson_result_base<T>::value() && noexcept(
4848

4949
template<typename T>
5050
simdjson_inline T&& implementation_simdjson_result_base<T>::take_value() &&noexcept(false) {
51-
if (error()) {throwsimdjson_error(error()); }
51+
if (simdjson_unlikely(error())) {throwsimdjson_error(error()); }
5252
return std::forward<T>(this->first);
5353
}
5454

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp