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

Commita3bc8d4

Browse files
committed
Improve branch prediction
1 parent34a01ec commita3bc8d4

20 files changed

+304
-294
lines changed

‎.vscode/settings.json‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@
55
],
66
"files.trimTrailingWhitespace":true,
77
"files.associations": {
8+
"*.mqh":"cpp",
9+
"*.mq4":"cpp",
10+
"*.mq5":"cpp",
11+
"*.hrl":"erlang",
12+
"*.es":"erlang",
813
".clangd":"yaml",
914
"array":"cpp",
1015
"iterator":"cpp",
@@ -103,6 +108,8 @@
103108
"charconv":"cpp",
104109
"source_location":"cpp",
105110
"strstream":"cpp",
106-
"typeindex":"cpp"
111+
"typeindex":"cpp",
112+
"*.tcc":"cpp",
113+
"format":"cpp"
107114
}
108115
}

‎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/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