Skip to content

Commit

Permalink
Introduce the idea of framing modes (#1549)
Browse files Browse the repository at this point in the history
Signed-off-by: Juan Cruz Viotti <[email protected]>
  • Loading branch information
jviotti authored Feb 11, 2025
1 parent b5cdffb commit f48ed88
Show file tree
Hide file tree
Showing 19 changed files with 386 additions and 190 deletions.
3 changes: 2 additions & 1 deletion benchmark/jsonschema.cc
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ static void Schema_Frame_OMC_Full(benchmark::State &state) {
"schemas" / "2019_09_omc_json_v2.json")};

for (auto _ : state) {
sourcemeta::core::SchemaFrame frame;
sourcemeta::core::SchemaFrame frame{
sourcemeta::core::SchemaFrame::Mode::Full};
frame.analyse(schema, sourcemeta::core::schema_official_walker,
sourcemeta::core::schema_official_resolver);
benchmark::DoNotOptimize(frame);
Expand Down
3 changes: 2 additions & 1 deletion src/core/jsonschema/bundle.cc
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,8 @@ auto bundle(sourcemeta::core::JSON &schema, const SchemaWalker &walker,
const std::optional<std::string> &default_dialect) -> void {
const auto vocabularies{
sourcemeta::core::vocabularies(schema, resolver, default_dialect)};
sourcemeta::core::SchemaFrame frame;
sourcemeta::core::SchemaFrame frame{
sourcemeta::core::SchemaFrame::Mode::Full};
bundle_schema(schema, definitions_keyword(vocabularies), schema, frame,
walker, resolver, default_dialect);
}
Expand Down
7 changes: 4 additions & 3 deletions src/core/jsonschema/frame.cc
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,8 @@ struct CacheSubschema {
const std::optional<sourcemeta::core::Pointer> parent;
};

auto internal_analyse(const sourcemeta::core::JSON &schema,
auto internal_analyse(const sourcemeta::core::SchemaFrame::Mode,
const sourcemeta::core::JSON &schema,
sourcemeta::core::SchemaFrame::Locations &frame,
sourcemeta::core::SchemaFrame::References &references,
const sourcemeta::core::SchemaWalker &walker,
Expand Down Expand Up @@ -940,8 +941,8 @@ auto SchemaFrame::analyse(const JSON &schema, const SchemaWalker &walker,
const std::optional<std::string> &default_dialect,
const std::optional<std::string> &default_id)
-> void {
internal_analyse(schema, this->locations_, this->references_, walker,
resolver, default_dialect, default_id);
internal_analyse(this->mode_, schema, this->locations_, this->references_,
walker, resolver, default_dialect, default_id);
}

auto SchemaFrame::locations() const noexcept -> const Locations & {
Expand Down
15 changes: 13 additions & 2 deletions src/core/jsonschema/include/sourcemeta/core/jsonschema_frame.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,9 @@ namespace sourcemeta::core {
/// }
/// })JSON");
///
/// sourcemeta::core::SchemaFrame frame;
/// sourcemeta::core::SchemaFrame
/// frame{sourcemeta::core::SchemaFrame::Mode::Full};
///
/// frame.analyse(document,
/// sourcemeta::core::schema_official_walker,
/// sourcemeta::core::schema_official_resolver);
Expand Down Expand Up @@ -101,6 +103,12 @@ namespace sourcemeta::core {
/// ```
class SOURCEMETA_CORE_JSONSCHEMA_EXPORT SchemaFrame {
public:
/// The mode of framing. More extensive analysis can be compute and memory
/// intensive
enum class Mode { Full };

SchemaFrame(const Mode mode) : mode_{mode} {}

/// A single entry in a JSON Schema reference map
struct ReferencesEntry {
std::string destination;
Expand Down Expand Up @@ -201,6 +209,7 @@ class SOURCEMETA_CORE_JSONSCHEMA_EXPORT SchemaFrame {
std::optional<std::reference_wrapper<const LocationsEntry>>>;

private:
Mode mode_;
// Exporting symbols that depends on the standard C++ library is considered
// safe.
// https://learn.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-2-c4275?view=msvc-170&redirectedfrom=MSDN
Expand Down Expand Up @@ -250,7 +259,9 @@ using SchemaUnevaluatedEntries = std::map<std::string, SchemaUnevaluatedEntry>;
/// "unevaluatedProperties": false
/// })JSON");
///
/// sourcemeta::core::SchemaFrame frame;
/// sourcemeta::core::SchemaFrame
/// frame{sourcemeta::core::SchemaFrame::Mode::Full};
///
/// frame.analyse(document,
/// sourcemeta::core::schema_official_walker,
/// sourcemeta::core::schema_official_resolver);
Expand Down
6 changes: 4 additions & 2 deletions src/core/jsonschema/jsonschema.cc
Original file line number Diff line number Diff line change
Expand Up @@ -566,7 +566,8 @@ auto sourcemeta::core::reference_visit(
const sourcemeta::core::SchemaVisitorReference &callback,
const std::optional<std::string> &default_dialect,
const std::optional<std::string> &default_id) -> void {
sourcemeta::core::SchemaFrame frame;
sourcemeta::core::SchemaFrame frame{
sourcemeta::core::SchemaFrame::Mode::Full};
frame.analyse(schema, walker, resolver, default_dialect, default_id);
for (const auto &entry : frame.locations()) {
if (entry.second.type !=
Expand Down Expand Up @@ -644,7 +645,8 @@ auto sourcemeta::core::unidentify(
const sourcemeta::core::SchemaResolver &resolver,
const std::optional<std::string> &default_dialect) -> void {
// (1) Re-frame before changing anything
sourcemeta::core::SchemaFrame frame;
sourcemeta::core::SchemaFrame frame{
sourcemeta::core::SchemaFrame::Mode::Full};
frame.analyse(schema, walker, resolver, default_dialect);

// (2) Remove all identifiers and anchors
Expand Down
2 changes: 1 addition & 1 deletion src/core/jsonschema/resolver.cc
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ auto SchemaMapResolver::add(const JSON &schema,

// Registering the top-level schema is not enough. We need to check
// and register every embedded schema resource too
SchemaFrame frame;
SchemaFrame frame{SchemaFrame::Mode::Full};
frame.analyse(schema, schema_official_walker, *this, default_dialect,
default_id);

Expand Down
Loading

5 comments on commit f48ed88

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (linux/llvm)

Benchmark suite Current: f48ed88 Previous: b5cdffb Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.2832968705878525 ns/iter 2.2349538849972546 ns/iter 1.02
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.1990017906969794 ns/iter 2.1942738388335385 ns/iter 1.00
Regex_Period_Asterisk 2.1903647178785715 ns/iter 2.184912592899142 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 2.189082508143088 ns/iter 2.1917092653176926 ns/iter 1.00
Regex_Period_Plus 2.486903123921891 ns/iter 2.490796317542416 ns/iter 1.00
Regex_Period 2.4874169656252896 ns/iter 2.4871989478952465 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 2.401375308118531 ns/iter 2.491267001993584 ns/iter 0.96
Regex_Caret_Group_Period_Plus_Group_Dollar 2.239363371129661 ns/iter 2.487302898267284 ns/iter 0.90
Regex_Caret_Period_Asterisk_Dollar 2.4894573505094164 ns/iter 3.106538363801349 ns/iter 0.80
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.4864786428741534 ns/iter 2.1801077423006796 ns/iter 1.14
Regex_Caret_X_Hyphen 12.527470918932536 ns/iter 12.470036935261204 ns/iter 1.00
Regex_Period_Md_Dollar 73.01065899767119 ns/iter 73.30295523316838 ns/iter 1.00
Regex_Caret_Slash_Period_Asterisk 6.283943849602274 ns/iter 5.911520557436913 ns/iter 1.06
Regex_Caret_Period_Range_Dollar 2.4967149161570057 ns/iter 2.5108495732630898 ns/iter 0.99
Regex_Nested_Backtrack 491.02054472827336 ns/iter 496.679884812141 ns/iter 0.99
JSON_Array_Of_Objects_Unique 447.9086054900762 ns/iter 392.63670107594385 ns/iter 1.14
JSON_Parse_1 30877.517679656194 ns/iter 30490.11678264249 ns/iter 1.01
JSON_Fast_Hash_Helm_Chart_Lock 68.35021667155996 ns/iter 56.01237821565964 ns/iter 1.22
JSON_Equality_Helm_Chart_Lock 168.1113208475415 ns/iter 161.54335727558734 ns/iter 1.04
JSON_String_Equal/10 7.781218142376171 ns/iter 7.014440762903042 ns/iter 1.11
JSON_String_Equal/100 8.40902593549119 ns/iter 6.8515540511659525 ns/iter 1.23
JSON_String_Equal_Small_By_Perfect_Hash/10 0.9373260950202259 ns/iter 0.9391825579963624 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 14.623624054941267 ns/iter 10.260861052693743 ns/iter 1.43
JSON_String_Fast_Hash/10 2.797607312108063 ns/iter 2.1768002459246993 ns/iter 1.29
JSON_String_Fast_Hash/100 2.839632949494221 ns/iter 2.176187345810927 ns/iter 1.30
JSON_String_Key_Hash/10 2.6987592832596623 ns/iter 2.491150479145749 ns/iter 1.08
JSON_String_Key_Hash/100 2.178050797748676 ns/iter 2.179533000461269 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.7357007158856277 ns/iter 3.7318839931830614 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 3.735991990175984 ns/iter 3.73185613286778 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.7350307069598183 ns/iter 3.7354132471788604 ns/iter 1.00
Pointer_Object_Traverse 44.6575248171356 ns/iter 44.96096012680536 ns/iter 0.99
Pointer_Object_Try_Traverse 52.34610891843722 ns/iter 52.30335672145912 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 317.526053001478 ns/iter 349.95490662113014 ns/iter 0.91
Schema_Frame_OMC_Full 237860608.33329734 ns/iter 241514758.33332372 ns/iter 0.98
Schema_Bundle_Meta_2020_12 10523800.522385012 ns/iter 10386397.253723567 ns/iter 1.01

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (macos/llvm)

Benchmark suite Current: f48ed88 Previous: b5cdffb Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 1.7393100714803982 ns/iter 1.8444213923781547 ns/iter 0.94
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.8024295297888875 ns/iter 1.8183604934551092 ns/iter 0.99
Regex_Period_Asterisk 1.9131495492521682 ns/iter 1.7942702796952148 ns/iter 1.07
Regex_Group_Period_Asterisk_Group 1.7384239082150208 ns/iter 1.7961001637624718 ns/iter 0.97
Regex_Period_Plus 1.998810738473833 ns/iter 2.1200654575678533 ns/iter 0.94
Regex_Period 2.2698473605988974 ns/iter 2.1769124799194315 ns/iter 1.04
Regex_Caret_Period_Plus_Dollar 2.004663200926856 ns/iter 2.05146954692257 ns/iter 0.98
Regex_Caret_Group_Period_Plus_Group_Dollar 2.050043573706597 ns/iter 2.072047340594785 ns/iter 0.99
Regex_Caret_Period_Asterisk_Dollar 1.8559631028941008 ns/iter 1.7205541920359066 ns/iter 1.08
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.7910573447746174 ns/iter 1.6753444860202664 ns/iter 1.07
Regex_Caret_X_Hyphen 7.728935152691551 ns/iter 7.421579655167888 ns/iter 1.04
Regex_Period_Md_Dollar 74.3130373608784 ns/iter 74.04714701995356 ns/iter 1.00
Regex_Caret_Slash_Period_Asterisk 5.3882732214591424 ns/iter 5.746620726938812 ns/iter 0.94
Regex_Caret_Period_Range_Dollar 2.408510915491961 ns/iter 2.355355144535292 ns/iter 1.02
Regex_Nested_Backtrack 796.9466938088323 ns/iter 765.6018249025426 ns/iter 1.04
JSON_Array_Of_Objects_Unique 357.26877182765406 ns/iter 426.00059730069825 ns/iter 0.84
JSON_Parse_1 24256.96683977963 ns/iter 22370.080549534705 ns/iter 1.08
JSON_Fast_Hash_Helm_Chart_Lock 61.66722626930113 ns/iter 55.2421625000079 ns/iter 1.12
JSON_Equality_Helm_Chart_Lock 151.85498112050928 ns/iter 128.12546689342 ns/iter 1.19
JSON_String_Equal/10 9.915483061120131 ns/iter 7.847758956212208 ns/iter 1.26
JSON_String_Equal/100 8.482371471410538 ns/iter 6.346505843573472 ns/iter 1.34
JSON_String_Equal_Small_By_Perfect_Hash/10 0.3588597324516792 ns/iter 0.3354873845267403 ns/iter 1.07
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.1856514523355273 ns/iter 3.0269105104197616 ns/iter 1.05
JSON_String_Fast_Hash/10 1.7727949039577697 ns/iter 1.6083211754770361 ns/iter 1.10
JSON_String_Fast_Hash/100 2.1302347432764495 ns/iter 1.9520491207902047 ns/iter 1.09
JSON_String_Key_Hash/10 1.438914698242369 ns/iter 1.3576679287423095 ns/iter 1.06
JSON_String_Key_Hash/100 1.670806944272945 ns/iter 1.3763617160442967 ns/iter 1.21
JSON_Object_Defines_Miss_Same_Length 2.443371086968884 ns/iter 2.3100718052589 ns/iter 1.06
JSON_Object_Defines_Miss_Too_Small 2.60780324955961 ns/iter 2.302926452706485 ns/iter 1.13
JSON_Object_Defines_Miss_Too_Large 2.371858409713314 ns/iter 2.310927124726863 ns/iter 1.03
Pointer_Object_Traverse 16.820806370864904 ns/iter 16.104087297463778 ns/iter 1.04
Pointer_Object_Try_Traverse 26.979792425873477 ns/iter 22.460817472779482 ns/iter 1.20
Pointer_Push_Back_Pointer_To_Weak_Pointer 230.7717943223696 ns/iter 173.625981077812 ns/iter 1.33
Schema_Frame_OMC_Full 202657652.9999981 ns/iter 161518675.0000021 ns/iter 1.25
Schema_Bundle_Meta_2020_12 9329684.14865535 ns/iter 7383415.343743612 ns/iter 1.26

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (windows/msvc)

Benchmark suite Current: f48ed88 Previous: b5cdffb Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 6.76734821428531 ns/iter 6.534661830358399 ns/iter 1.04
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 6.986962499999955 ns/iter 6.561756696429809 ns/iter 1.06
Regex_Period_Asterisk 6.638455357143818 ns/iter 6.705693749998837 ns/iter 0.99
Regex_Group_Period_Asterisk_Group 6.572868303571511 ns/iter 7.028895089286534 ns/iter 0.94
Regex_Period_Plus 7.08168482142822 ns/iter 7.002263392856938 ns/iter 1.01
Regex_Period 7.715477678571503 ns/iter 7.055739955355022 ns/iter 1.09
Regex_Caret_Period_Plus_Dollar 6.979827008929565 ns/iter 6.8786557728630395 ns/iter 1.01
Regex_Caret_Group_Period_Plus_Group_Dollar 7.000033928571879 ns/iter 7.048380580358631 ns/iter 0.99
Regex_Caret_Period_Asterisk_Dollar 6.584970982142581 ns/iter 6.8280696428563 ns/iter 0.96
Regex_Caret_Group_Period_Asterisk_Group_Dollar 6.821566964285708 ns/iter 6.738003348214505 ns/iter 1.01
Regex_Caret_X_Hyphen 11.875676785714568 ns/iter 14.42048660714639 ns/iter 0.82
Regex_Period_Md_Dollar 149.31977678571684 ns/iter 153.9481473214112 ns/iter 0.97
Regex_Caret_Slash_Period_Asterisk 10.318203971793247 ns/iter 10.284473437501163 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 7.357111607142792 ns/iter 7.416595982141822 ns/iter 0.99
Regex_Nested_Backtrack 601.9520535714053 ns/iter 598.6018750001725 ns/iter 1.01
JSON_Array_Of_Objects_Unique 441.83184147363124 ns/iter 404.27340159490024 ns/iter 1.09
JSON_Parse_1 80014.04017857285 ns/iter 98320.45312499815 ns/iter 0.81
JSON_Fast_Hash_Helm_Chart_Lock 68.94674107142252 ns/iter 55.8829553571424 ns/iter 1.23
JSON_Equality_Helm_Chart_Lock 186.11242540932446 ns/iter 195.42917816333147 ns/iter 0.95
JSON_String_Equal/10 9.626424064166972 ns/iter 10.0505421874999 ns/iter 0.96
JSON_String_Equal/100 10.174285668864837 ns/iter 9.922209330706126 ns/iter 1.03
JSON_String_Equal_Small_By_Perfect_Hash/10 2.172105624999787 ns/iter 2.1672815625002784 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 14.786729910714056 ns/iter 14.52056249999905 ns/iter 1.02
JSON_String_Fast_Hash/10 3.7256753504898885 ns/iter 3.0986915178569268 ns/iter 1.20
JSON_String_Fast_Hash/100 3.721634101327458 ns/iter 3.0968401785713695 ns/iter 1.20
JSON_String_Key_Hash/10 7.517417377154597 ns/iter 7.602110491072368 ns/iter 0.99
JSON_String_Key_Hash/100 3.7745099717813555 ns/iter 3.721802494184263 ns/iter 1.01
JSON_Object_Defines_Miss_Same_Length 4.066019873331802 ns/iter 4.033598221487906 ns/iter 1.01
JSON_Object_Defines_Miss_Too_Small 3.4132813331907506 ns/iter 3.404046734992544 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.720927314783827 ns/iter 3.7241571362065766 ns/iter 1.00
Pointer_Object_Traverse 52.39319999999452 ns/iter 49.52667999998539 ns/iter 1.06
Pointer_Object_Try_Traverse 71.07249999999915 ns/iter 65.41366071429269 ns/iter 1.09
Pointer_Push_Back_Pointer_To_Weak_Pointer 179.92729285064365 ns/iter 172.11602938276425 ns/iter 1.05
Schema_Frame_OMC_Full 493992200.00009334 ns/iter 467771350.0000209 ns/iter 1.06
Schema_Bundle_Meta_2020_12 23203153.571415666 ns/iter 23530150.000033244 ns/iter 0.99

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (macos/gcc)

Benchmark suite Current: f48ed88 Previous: b5cdffb Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 1.8842273992348497 ns/iter 1.9623587462481782 ns/iter 0.96
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.9166816023192932 ns/iter 1.9389800422400334 ns/iter 0.99
Regex_Period_Asterisk 1.962934704058309 ns/iter 1.9430573569690823 ns/iter 1.01
Regex_Group_Period_Asterisk_Group 2.2274376747411075 ns/iter 1.9315860470131037 ns/iter 1.15
Regex_Period_Plus 1.585609007710961 ns/iter 1.6469516550742778 ns/iter 0.96
Regex_Period 1.6064802239264724 ns/iter 1.6048549335370854 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 1.591965515041057 ns/iter 1.609542701422055 ns/iter 0.99
Regex_Caret_Group_Period_Plus_Group_Dollar 1.591744524946517 ns/iter 1.6073993145748244 ns/iter 0.99
Regex_Caret_Period_Asterisk_Dollar 1.8941118006219209 ns/iter 1.9194988434251163 ns/iter 0.99
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.9101490146644111 ns/iter 2.1522351345438167 ns/iter 0.89
Regex_Caret_X_Hyphen 5.965509252167312 ns/iter 6.298595813902177 ns/iter 0.95
Regex_Period_Md_Dollar 69.55630625268383 ns/iter 71.60120222788728 ns/iter 0.97
Regex_Caret_Slash_Period_Asterisk 4.613582778709544 ns/iter 4.5435037996503285 ns/iter 1.02
Regex_Caret_Period_Range_Dollar 1.892761526364777 ns/iter 1.937888686642154 ns/iter 0.98
Regex_Nested_Backtrack 873.6987897106665 ns/iter 871.3501839445506 ns/iter 1.00
JSON_Array_Of_Objects_Unique 205.93040164997478 ns/iter 220.37023887432863 ns/iter 0.93
JSON_Parse_1 22973.397719081506 ns/iter 23285.991348683572 ns/iter 0.99
JSON_Fast_Hash_Helm_Chart_Lock 23.513372104071877 ns/iter 23.554110409972214 ns/iter 1.00
JSON_Equality_Helm_Chart_Lock 114.74309202362564 ns/iter 118.74767725557751 ns/iter 0.97
JSON_String_Equal/10 5.4228338684897235 ns/iter 5.539579021320741 ns/iter 0.98
JSON_String_Equal/100 5.114642024864316 ns/iter 5.161372626561699 ns/iter 0.99
JSON_String_Equal_Small_By_Perfect_Hash/10 0.9446143112956834 ns/iter 0.7688125651763483 ns/iter 1.23
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.5063553679656034 ns/iter 3.512942353391748 ns/iter 1.00
JSON_String_Fast_Hash/10 1.900813257317266 ns/iter 1.9352444280434358 ns/iter 0.98
JSON_String_Fast_Hash/100 1.9049022497535737 ns/iter 1.9168920420170066 ns/iter 0.99
JSON_String_Key_Hash/10 1.445597800111734 ns/iter 1.4485998285392312 ns/iter 1.00
JSON_String_Key_Hash/100 1.9208206774562784 ns/iter 1.9569132927677755 ns/iter 0.98
JSON_Object_Defines_Miss_Same_Length 1.726144784306689 ns/iter 1.7886911163765666 ns/iter 0.97
JSON_Object_Defines_Miss_Too_Small 1.8822703950911441 ns/iter 1.902881334413093 ns/iter 0.99
JSON_Object_Defines_Miss_Too_Large 1.7242903813651471 ns/iter 1.7500228488881844 ns/iter 0.99
Pointer_Object_Traverse 51.60019459303983 ns/iter 55.48826080445096 ns/iter 0.93
Pointer_Object_Try_Traverse 35.70941709977653 ns/iter 36.13547214158979 ns/iter 0.99
Pointer_Push_Back_Pointer_To_Weak_Pointer 154.49149500064092 ns/iter 158.3370523203024 ns/iter 0.98
Schema_Frame_OMC_Full 190235733.98590088 ns/iter 186933517.4560547 ns/iter 1.02
Schema_Bundle_Meta_2020_12 8561454.16818014 ns/iter 8879676.277254835 ns/iter 0.96

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (linux/gcc)

Benchmark suite Current: f48ed88 Previous: b5cdffb Ratio
Schema_Frame_OMC_Full 235988345.33333957 ns/iter 240810116.99998572 ns/iter 0.98
Schema_Bundle_Meta_2020_12 10552611.230771339 ns/iter 10653629.984610163 ns/iter 0.99
Pointer_Object_Traverse 47.78324236195358 ns/iter 50.10181337816171 ns/iter 0.95
Pointer_Object_Try_Traverse 26.498764095404617 ns/iter 26.48701212236391 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 163.9962425728427 ns/iter 160.3842267949935 ns/iter 1.02
JSON_Array_Of_Objects_Unique 378.7551558575065 ns/iter 368.7576082835198 ns/iter 1.03
JSON_Parse_1 33346.32657722198 ns/iter 33664.598658038114 ns/iter 0.99
JSON_Fast_Hash_Helm_Chart_Lock 66.21069341679393 ns/iter 63.10566210321151 ns/iter 1.05
JSON_Equality_Helm_Chart_Lock 149.27403106586573 ns/iter 147.62962380371624 ns/iter 1.01
JSON_String_Equal/10 5.71895513666253 ns/iter 5.7180804649717665 ns/iter 1.00
JSON_String_Equal/100 6.340516353816064 ns/iter 6.341592454392342 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 0.623404756016833 ns/iter 0.936118025855481 ns/iter 0.67
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 25.470462508238207 ns/iter 11.796535363305372 ns/iter 2.16
JSON_String_Fast_Hash/10 0.9330939637953263 ns/iter 0.9349994851976029 ns/iter 1.00
JSON_String_Fast_Hash/100 0.9361458798457987 ns/iter 0.9349096664057152 ns/iter 1.00
JSON_String_Key_Hash/10 1.2451846076995081 ns/iter 1.2459202575492172 ns/iter 1.00
JSON_String_Key_Hash/100 0.9345726628493335 ns/iter 0.9350979995925786 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 2.488935597546653 ns/iter 2.5039604706308958 ns/iter 0.99
JSON_Object_Defines_Miss_Too_Small 2.801102082700217 ns/iter 2.7979364309627925 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 2.4959492400186636 ns/iter 2.4919375334949616 ns/iter 1.00
Regex_Lower_S_Or_Upper_S_Asterisk 3.1187436797187047 ns/iter 3.1097577152027553 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 3.1082515770139105 ns/iter 2.8049638218244226 ns/iter 1.11
Regex_Period_Asterisk 3.167274167315304 ns/iter 2.8044289572892 ns/iter 1.13
Regex_Group_Period_Asterisk_Group 3.1079998204290997 ns/iter 2.7995481916335945 ns/iter 1.11
Regex_Period_Plus 3.4214366269521905 ns/iter 2.8053615591773706 ns/iter 1.22
Regex_Period 3.419888399265424 ns/iter 2.7987294357855714 ns/iter 1.22
Regex_Caret_Period_Plus_Dollar 3.4213984058686493 ns/iter 2.7992268966977267 ns/iter 1.22
Regex_Caret_Group_Period_Plus_Group_Dollar 3.4203433082118795 ns/iter 2.804095929160143 ns/iter 1.22
Regex_Caret_Period_Asterisk_Dollar 4.359788325793043 ns/iter 2.803574431115508 ns/iter 1.56
Regex_Caret_Group_Period_Asterisk_Group_Dollar 4.356615792620213 ns/iter 2.7979432369983868 ns/iter 1.56
Regex_Caret_X_Hyphen 13.6816921575374 ns/iter 13.106464171448842 ns/iter 1.04
Regex_Period_Md_Dollar 90.03560171781106 ns/iter 92.6849144553758 ns/iter 0.97
Regex_Caret_Slash_Period_Asterisk 8.39309824875925 ns/iter 7.784457339785916 ns/iter 1.08
Regex_Caret_Period_Range_Dollar 4.356293398158149 ns/iter 3.4195804532759606 ns/iter 1.27
Regex_Nested_Backtrack 819.8311226522526 ns/iter 829.4732182879665 ns/iter 0.99

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.