Skip to content

Comments

Refactor JSON parser on a parser + construct pair of phases#2242

Merged
jviotti merged 4 commits intomainfrom
json-two-phases
Feb 11, 2026
Merged

Refactor JSON parser on a parser + construct pair of phases#2242
jviotti merged 4 commits intomainfrom
json-two-phases

Conversation

@jviotti
Copy link
Member

@jviotti jviotti commented Feb 11, 2026

Signed-off-by: Juan Cruz Viotti jv@jviotti.com

Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
Copy link

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

No issues found across 9 files

@augmentcode
Copy link

augmentcode bot commented Feb 11, 2026

🤖 Augment PR Summary

Summary: Refactors the JSON parser into a two-phase scan (tape) + construct pipeline to separate syntax validation from value construction and keep callback/position tracking efficient.

Changes:

  • Introduced a tape-based scanner in src/core/json/parser.h that records tokens, offsets/lengths, container sizes, and optional line/column positions.
  • Added construct_json() in src/core/json/construct.h to build the final JSON value (and emit parse callbacks) from the tape.
  • Updated parse_json overloads to optionally skip position tracking for the fast path, retrying with tracking enabled only when a parse error occurs.
  • Added JSONArray::reserve() and used recorded container counts to reserve array/object capacity during construction.
  • Extended object hashing/assignment APIs to support hashing from raw key bytes and inserting properties with precomputed hashes.
  • Reduced the size of sourcemeta::core::JSON (and updated the size test accordingly).

Technical Notes: Callbacks continue to receive Pre/Post events with line/column derived from the scanner’s tape entries, while number/string construction is deferred to the construct phase.

🤖 Was this summary useful? React with 👍 or 👎

Copy link

@augmentcode augmentcode bot left a comment

Choose a reason for hiding this comment

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

Review completed. 2 suggestions posted.

Fix All in Augment

Comment augment review to trigger a new review at any time.

Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Benchmark (linux/llvm)

Details
Benchmark suite Current: fb368cd Previous: 90aad0d Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 3.1435764413759566 ns/iter 3.111218781248437 ns/iter 1.01
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 3.106346402376424 ns/iter 3.1210793915436024 ns/iter 1.00
Regex_Period_Asterisk 3.105639300520706 ns/iter 3.128582703627345 ns/iter 0.99
Regex_Group_Period_Asterisk_Group 3.1056582301183373 ns/iter 3.110395739424143 ns/iter 1.00
Regex_Period_Plus 2.8157134990858346 ns/iter 2.8212738458953694 ns/iter 1.00
Regex_Period 3.033440179230443 ns/iter 3.0253754031743867 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 2.8801553243146447 ns/iter 2.8458505313057354 ns/iter 1.01
Regex_Caret_Group_Period_Plus_Group_Dollar 2.8686939741507147 ns/iter 2.8868485284383514 ns/iter 0.99
Regex_Caret_Period_Asterisk_Dollar 3.4160523090008916 ns/iter 3.106283973144324 ns/iter 1.10
Regex_Caret_Group_Period_Asterisk_Group_Dollar 3.1728454238771113 ns/iter 3.4250249703586118 ns/iter 0.93
Regex_Caret_X_Hyphen 10.667168612172416 ns/iter 10.65555229605117 ns/iter 1.00
Regex_Period_Md_Dollar 27.531281728559392 ns/iter 27.202238146271643 ns/iter 1.01
Regex_Caret_Slash_Period_Asterisk 6.848306643791794 ns/iter 6.21405194297265 ns/iter 1.10
Regex_Caret_Period_Range_Dollar 4.038733642136853 ns/iter 4.038349977675111 ns/iter 1.00
Regex_Nested_Backtrack 48.88610993018417 ns/iter 48.91292045647278 ns/iter 1.00
JSON_Array_Of_Objects_Unique 447.36712031602156 ns/iter 452.0396490003381 ns/iter 0.99
JSON_Parse_1 8138.551287114303 ns/iter 7889.679166805989 ns/iter 1.03
JSON_Parse_Real 11822.00251036018 ns/iter 11885.87118117339 ns/iter 0.99
JSON_Parse_Decimal 80866.07142034304 ns/iter 82877.94991140037 ns/iter 0.98
JSON_Parse_Schema_ISO_Language 7271951.536081454 ns/iter 6173900.6607146915 ns/iter 1.18
JSON_Fast_Hash_Helm_Chart_Lock 62.513588944961256 ns/iter 62.15889691786043 ns/iter 1.01
JSON_Equality_Helm_Chart_Lock 177.4284869501103 ns/iter 167.13468577555244 ns/iter 1.06
JSON_String_Equal/10 6.221176494000832 ns/iter 6.80095185473676 ns/iter 0.91
JSON_String_Equal/100 6.849554892493961 ns/iter 6.844495852861562 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 0.9365639350862174 ns/iter 0.9347128743341107 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 10.259328167244373 ns/iter 10.258075960242829 ns/iter 1.00
JSON_String_Fast_Hash/10 2.7994040108226548 ns/iter 2.7968409317213663 ns/iter 1.00
JSON_String_Fast_Hash/100 2.7981151756334444 ns/iter 2.7998231230792916 ns/iter 1.00
JSON_String_Key_Hash/10 2.1792947786345818 ns/iter 2.179045659596288 ns/iter 1.00
JSON_String_Key_Hash/100 6.533540276315258 ns/iter 6.529449625438438 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.7347481844560724 ns/iter 3.7327360799856524 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 3.739586428131824 ns/iter 3.7404956737745723 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.737038672713452 ns/iter 3.733153169454817 ns/iter 1.00
Pointer_Object_Traverse 44.58540594272605 ns/iter 46.0854331649469 ns/iter 0.97
Pointer_Object_Try_Traverse 53.59765451257583 ns/iter 53.56740913845791 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 319.52592741146844 ns/iter 299.6356444686593 ns/iter 1.07
Pointer_Walker_Schema_ISO_Language 3170814.3228697856 ns/iter 3160641.166666644 ns/iter 1.00
Schema_Frame_WoT_References 4790643.013605397 ns/iter 4773142.876712122 ns/iter 1.00
Schema_Frame_OMC_References 19937280.1714292 ns/iter 19759897.485716596 ns/iter 1.01
Schema_Frame_OMC_Locations 18294400.02631755 ns/iter 18150039.94871835 ns/iter 1.01
Schema_Frame_ISO_Language_Locations 100392925.1666591 ns/iter 98823697.00000025 ns/iter 1.02
Schema_Frame_KrakenD_References 37441280.315785035 ns/iter 37826306.52631269 ns/iter 0.99
Schema_Frame_KrakenD_Reachable 578052735.0000284 ns/iter 590767005.9999646 ns/iter 0.98
Schema_Iterator_ISO_Language 2280065.88273609 ns/iter 2282441.748366033 ns/iter 1.00
Schema_Frame_ISO_Language_Locations_To_JSON 130618312.2499931 ns/iter 130881169.49998607 ns/iter 1.00
Schema_Tracker_ISO_Language 29253416.1739112 ns/iter 29416729.791662987 ns/iter 0.99
Schema_Tracker_ISO_Language_To_JSON 23517659.419355605 ns/iter 22860551.344827965 ns/iter 1.03
Schema_Format_ISO_Language_To_JSON 106933418.57144593 ns/iter 104740110.49999869 ns/iter 1.02
Schema_Bundle_Meta_2020_12 1664099.9452384957 ns/iter 1666338.9355630735 ns/iter 1.00
Schema_Frame_Many_Resources_References 364092778.999975 ns/iter 366845468.00000817 ns/iter 0.99
Alterschema_Check_Readibility_ISO_Language_Set_3 216138592.9999824 ns/iter 212707840.3333371 ns/iter 1.02
Alterschema_Check_Readibility_OMC 32463641.13636508 ns/iter 31938650.045457385 ns/iter 1.02
Alterschema_Apply_Readibility_KrakenD 599692733.9999729 ns/iter 610140499.9999431 ns/iter 0.98
EditorSchema_ForEditor_EmbeddedResources 13408172.499997417 ns/iter 13330362.018864607 ns/iter 1.01
URITemplateRouter_Create 17478.525316772975 ns/iter 17516.900074053814 ns/iter 1.00
URITemplateRouter_Match 172.6864785251815 ns/iter 176.28645428891934 ns/iter 0.98
URITemplateRouterView_Restore 8220.558613970878 ns/iter 8219.91890959596 ns/iter 1.00
URITemplateRouterView_Match 122.02643305589342 ns/iter 138.01328588277013 ns/iter 0.88

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

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Benchmark (macos/llvm)

Details
Benchmark suite Current: fb368cd Previous: 90aad0d Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.489316839310458 ns/iter 2.478275749494619 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.16249324911802 ns/iter 2.177216248102214 ns/iter 0.99
Regex_Period_Asterisk 2.29949122967507 ns/iter 2.2765974272357674 ns/iter 1.01
Regex_Group_Period_Asterisk_Group 2.2045794619369423 ns/iter 2.1946187961702837 ns/iter 1.00
Regex_Period_Plus 2.5716883691034105 ns/iter 2.643283214082268 ns/iter 0.97
Regex_Period 2.6847736399633773 ns/iter 2.6399635946830875 ns/iter 1.02
Regex_Caret_Period_Plus_Dollar 2.869359972834698 ns/iter 2.583564917807953 ns/iter 1.11
Regex_Caret_Group_Period_Plus_Group_Dollar 2.5825853607243388 ns/iter 2.335568088678983 ns/iter 1.11
Regex_Caret_Period_Asterisk_Dollar 2.1343283134135014 ns/iter 1.9978391071446004 ns/iter 1.07
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.207237851136272 ns/iter 2.0417593345962315 ns/iter 1.08
Regex_Caret_X_Hyphen 7.930199525620628 ns/iter 7.620169222395394 ns/iter 1.04
Regex_Period_Md_Dollar 25.09041170158277 ns/iter 26.489707668344764 ns/iter 0.95
Regex_Caret_Slash_Period_Asterisk 6.843631732292426 ns/iter 6.872856453936712 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 3.0599141026391785 ns/iter 2.2074125716178123 ns/iter 1.39
Regex_Nested_Backtrack 46.81303796618643 ns/iter 39.37949594588121 ns/iter 1.19
JSON_Array_Of_Objects_Unique 497.6138281000352 ns/iter 453.9757465938689 ns/iter 1.10
JSON_Parse_1 8005.543096042923 ns/iter 8165.871139397865 ns/iter 0.98
JSON_Parse_Real 10568.887985313093 ns/iter 9236.939214533839 ns/iter 1.14
JSON_Parse_Decimal 320896.35458558693 ns/iter 314716.9970985642 ns/iter 1.02
JSON_Parse_Schema_ISO_Language 7618239.329267785 ns/iter 8898902.923077572 ns/iter 0.86
JSON_Fast_Hash_Helm_Chart_Lock 72.06971849247778 ns/iter 81.95856333992405 ns/iter 0.88
JSON_Equality_Helm_Chart_Lock 168.6723094191708 ns/iter 163.67146203960448 ns/iter 1.03
JSON_String_Equal/10 8.294567839252274 ns/iter 7.340136311832031 ns/iter 1.13
JSON_String_Equal/100 8.70991117704663 ns/iter 7.821946132558705 ns/iter 1.11
JSON_String_Equal_Small_By_Perfect_Hash/10 0.9972431234257773 ns/iter 0.3783718780458211 ns/iter 2.64
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 4.360533013928678 ns/iter 4.127663571778313 ns/iter 1.06
JSON_String_Fast_Hash/10 2.867813805593401 ns/iter 2.8157079331340618 ns/iter 1.02
JSON_String_Fast_Hash/100 2.6708435719045407 ns/iter 2.703662954259356 ns/iter 0.99
JSON_String_Key_Hash/10 1.801498546188919 ns/iter 1.7864374737254405 ns/iter 1.01
JSON_String_Key_Hash/100 3.2124976238492113 ns/iter 2.733630466209884 ns/iter 1.18
JSON_Object_Defines_Miss_Same_Length 2.91662499128684 ns/iter 3.69331569903041 ns/iter 0.79
JSON_Object_Defines_Miss_Too_Small 3.312173518887066 ns/iter 3.473265828436294 ns/iter 0.95
JSON_Object_Defines_Miss_Too_Large 3.3827434294152714 ns/iter 3.6897338672937616 ns/iter 0.92
Pointer_Object_Traverse 22.582743568663137 ns/iter 19.469830789491933 ns/iter 1.16
Pointer_Object_Try_Traverse 30.943839705456046 ns/iter 28.309307519811668 ns/iter 1.09
Pointer_Push_Back_Pointer_To_Weak_Pointer 211.87183947043562 ns/iter 210.81817009743787 ns/iter 1.00
Pointer_Walker_Schema_ISO_Language 5702944.438096546 ns/iter 6675769.975206192 ns/iter 0.85
Schema_Frame_WoT_References 5864130.091603821 ns/iter 6810588.749999625 ns/iter 0.86
Schema_Frame_OMC_References 31096494.791664023 ns/iter 36064802.099997446 ns/iter 0.86
Schema_Frame_OMC_Locations 28519303.319999382 ns/iter 31921282.60869377 ns/iter 0.89
Schema_Frame_ISO_Language_Locations 106216541.66667819 ns/iter 104008374.999997 ns/iter 1.02
Schema_Frame_KrakenD_References 58312985.14286637 ns/iter 66353225.666659914 ns/iter 0.88
Schema_Frame_KrakenD_Reachable 527243793.0000251 ns/iter 617071166.9997218 ns/iter 0.85
Schema_Iterator_ISO_Language 2846980.050847733 ns/iter 2750136.8243235387 ns/iter 1.04
Schema_Frame_ISO_Language_Locations_To_JSON 113583638.83334732 ns/iter 117243951.33334535 ns/iter 0.97
Schema_Tracker_ISO_Language 43263564.83333408 ns/iter 43721429.68750836 ns/iter 0.99
Schema_Tracker_ISO_Language_To_JSON 20318286.02702803 ns/iter 22184172.60714237 ns/iter 0.92
Schema_Format_ISO_Language_To_JSON 106601196.71436925 ns/iter 142662506.8333654 ns/iter 0.75
Schema_Bundle_Meta_2020_12 1656216.534031703 ns/iter 1960727.2617477411 ns/iter 0.84
Schema_Frame_Many_Resources_References 391775833.49999166 ns/iter 600710334.0000412 ns/iter 0.65
Alterschema_Check_Readibility_ISO_Language_Set_3 194926430.66663125 ns/iter 251015041.66665712 ns/iter 0.78
Alterschema_Check_Readibility_OMC 39884566.17647737 ns/iter 57040275.615376085 ns/iter 0.70
Alterschema_Apply_Readibility_KrakenD 695148916.9998695 ns/iter 738420292.000228 ns/iter 0.94
EditorSchema_ForEditor_EmbeddedResources 14267375.844433952 ns/iter 15151235.312501399 ns/iter 0.94
URITemplateRouter_Create 20447.556266630727 ns/iter 22568.37732365854 ns/iter 0.91
URITemplateRouter_Match 212.4920003874133 ns/iter 218.2702829027853 ns/iter 0.97
URITemplateRouterView_Restore 13865.104501659956 ns/iter 14504.900356390084 ns/iter 0.96
URITemplateRouterView_Match 141.47218053892354 ns/iter 202.01988512346824 ns/iter 0.70

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

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Benchmark (windows/msvc)

Details
Benchmark suite Current: fb368cd Previous: 90aad0d Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 4.457098125000414 ns/iter 4.428734989126244 ns/iter 1.01
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 4.1688487128017435 ns/iter 4.0858646055106655 ns/iter 1.02
Regex_Period_Asterisk 3.825654636025723 ns/iter 3.782783482142449 ns/iter 1.01
Regex_Group_Period_Asterisk_Group 3.781879814674327 ns/iter 3.7701873146965896 ns/iter 1.00
Regex_Period_Plus 3.8063744419642678 ns/iter 3.773701600404254 ns/iter 1.01
Regex_Period 3.7952912946424635 ns/iter 3.7774858861124594 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 3.796259860139887 ns/iter 3.7736089218325546 ns/iter 1.01
Regex_Caret_Group_Period_Plus_Group_Dollar 3.8075641741069126 ns/iter 3.7868030289528276 ns/iter 1.01
Regex_Caret_Period_Asterisk_Dollar 3.795891183036661 ns/iter 3.7693301718407053 ns/iter 1.01
Regex_Caret_Group_Period_Asterisk_Group_Dollar 3.8024683860667725 ns/iter 3.7707107075514155 ns/iter 1.01
Regex_Caret_X_Hyphen 7.625376116069711 ns/iter 7.548319196428414 ns/iter 1.01
Regex_Period_Md_Dollar 35.42457250758972 ns/iter 35.056362233145215 ns/iter 1.01
Regex_Caret_Slash_Period_Asterisk 7.260828124999412 ns/iter 7.215199999998439 ns/iter 1.01
Regex_Caret_Period_Range_Dollar 4.76347501063248 ns/iter 4.718287188554182 ns/iter 1.01
Regex_Nested_Backtrack 108.7260312500149 ns/iter 98.48090185351019 ns/iter 1.10
JSON_Array_Of_Objects_Unique 456.11284880899876 ns/iter 509.9844999999732 ns/iter 0.89
JSON_Parse_1 11607.134375001493 ns/iter 12236.12321428342 ns/iter 0.95
JSON_Parse_Real 16634.852678575182 ns/iter 21429.58125000405 ns/iter 0.78
JSON_Parse_Decimal 207312.0312500265 ns/iter 211780.93749995242 ns/iter 0.98
JSON_Parse_Schema_ISO_Language 9481458.666668914 ns/iter 9790956.000000127 ns/iter 0.97
JSON_Fast_Hash_Helm_Chart_Lock 61.39483928570095 ns/iter 70.80601562500074 ns/iter 0.87
JSON_Equality_Helm_Chart_Lock 263.44325000000674 ns/iter 264.1081792012611 ns/iter 1.00
JSON_String_Equal/10 12.377314230457765 ns/iter 13.0305876650444 ns/iter 0.95
JSON_String_Equal/100 14.04364413373155 ns/iter 14.17086556173722 ns/iter 0.99
JSON_String_Equal_Small_By_Perfect_Hash/10 2.2123887499994055 ns/iter 2.197237943976316 ns/iter 1.01
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 12.627757142857782 ns/iter 12.821733424902574 ns/iter 0.98
JSON_String_Fast_Hash/10 3.459868788465045 ns/iter 4.127524962727509 ns/iter 0.84
JSON_String_Fast_Hash/100 3.516216378434711 ns/iter 4.079216047286384 ns/iter 0.86
JSON_String_Key_Hash/10 4.425810000000752 ns/iter 4.401397777680952 ns/iter 1.01
JSON_String_Key_Hash/100 16.76388694131143 ns/iter 13.750657974330913 ns/iter 1.22
JSON_Object_Defines_Miss_Same_Length 3.8317516003001995 ns/iter 3.76928571428538 ns/iter 1.02
JSON_Object_Defines_Miss_Too_Small 3.8127241003343464 ns/iter 3.7689492187504516 ns/iter 1.01
JSON_Object_Defines_Miss_Too_Large 3.8452087053565873 ns/iter 4.176296778255997 ns/iter 0.92
Pointer_Object_Traverse 54.57896428570815 ns/iter 51.44845535714435 ns/iter 1.06
Pointer_Object_Try_Traverse 73.65632142856222 ns/iter 81.48071428572783 ns/iter 0.90
Pointer_Push_Back_Pointer_To_Weak_Pointer 177.27502972828282 ns/iter 163.09516012970096 ns/iter 1.09
Pointer_Walker_Schema_ISO_Language 12157167.857143998 ns/iter 10780278.12500082 ns/iter 1.13
Schema_Frame_WoT_References 10060523.437498858 ns/iter 10720651.999999972 ns/iter 0.94
Schema_Frame_OMC_References 46853353.33333569 ns/iter 43879687.49999516 ns/iter 1.07
Schema_Frame_OMC_Locations 42735623.529404834 ns/iter 41187441.17646897 ns/iter 1.04
Schema_Frame_ISO_Language_Locations 221562833.33333704 ns/iter 201974899.9999441 ns/iter 1.10
Schema_Frame_KrakenD_References 102972885.71431246 ns/iter 96232285.71428756 ns/iter 1.07
Schema_Frame_KrakenD_Reachable 595075899.9999834 ns/iter 540049100.0000329 ns/iter 1.10
Schema_Iterator_ISO_Language 4921885.714285931 ns/iter 4457033.750000505 ns/iter 1.10
Schema_Frame_ISO_Language_Locations_To_JSON 276892449.9999912 ns/iter 263701866.66660324 ns/iter 1.05
Schema_Tracker_ISO_Language 53691818.181815416 ns/iter 49840214.28570681 ns/iter 1.08
Schema_Tracker_ISO_Language_To_JSON 57082072.727284454 ns/iter 56381099.9999987 ns/iter 1.01
Schema_Format_ISO_Language_To_JSON 215662000.00006577 ns/iter 205323399.9999217 ns/iter 1.05
Schema_Bundle_Meta_2020_12 2893848.30508498 ns/iter 2880523.305072907 ns/iter 1.00
Schema_Frame_Many_Resources_References 1526513699.9998958 ns/iter 1485673099.9999855 ns/iter 1.03
Alterschema_Check_Readibility_ISO_Language_Set_3 351567449.9999477 ns/iter 330250549.9999597 ns/iter 1.06
Alterschema_Check_Readibility_OMC 64985944.444439754 ns/iter 60437790.90908753 ns/iter 1.08
Alterschema_Apply_Readibility_KrakenD 1096139600.000015 ns/iter 1024458900.000127 ns/iter 1.07
EditorSchema_ForEditor_EmbeddedResources 29168291.666650247 ns/iter 26928361.53847531 ns/iter 1.08
URITemplateRouter_Create 22997.92747848602 ns/iter 22598.771219075188 ns/iter 1.02
URITemplateRouter_Match 208.85499999998558 ns/iter 208.72224514629633 ns/iter 1.00
URITemplateRouterView_Restore 33107.2579061024 ns/iter 31758.543102241136 ns/iter 1.04
URITemplateRouterView_Match 150.33082589285738 ns/iter 143.40796234785319 ns/iter 1.05

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

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Benchmark (linux/gcc)

Details
Benchmark suite Current: fb368cd Previous: 90aad0d Ratio
URITemplateRouter_Create 14469.276213400462 ns/iter 14763.69155568615 ns/iter 0.98
URITemplateRouter_Match 152.505896144305 ns/iter 165.99372488923615 ns/iter 0.92
URITemplateRouterView_Restore 8234.689881054763 ns/iter 8392.988386717878 ns/iter 0.98
URITemplateRouterView_Match 140.66143692316712 ns/iter 124.20173912366239 ns/iter 1.13
EditorSchema_ForEditor_EmbeddedResources 14015441.720002854 ns/iter 14093103.520026488 ns/iter 0.99
Alterschema_Check_Readibility_ISO_Language_Set_3 215989508.66662863 ns/iter 213776348.66666996 ns/iter 1.01
Alterschema_Check_Readibility_OMC 35491985.04999822 ns/iter 34411712.00000781 ns/iter 1.03
Alterschema_Apply_Readibility_KrakenD 634380713.9999171 ns/iter 604940760.0000905 ns/iter 1.05
Schema_Frame_WoT_References 5529111.153847366 ns/iter 5383815.564885599 ns/iter 1.03
Schema_Frame_OMC_References 23126982.9666644 ns/iter 22229248.677420754 ns/iter 1.04
Schema_Frame_OMC_Locations 21196981.818182833 ns/iter 20599142.441175684 ns/iter 1.03
Schema_Frame_ISO_Language_Locations 107809128.16668813 ns/iter 107056846.9999671 ns/iter 1.01
Schema_Frame_KrakenD_References 43754532.56248818 ns/iter 43701780.74999842 ns/iter 1.00
Schema_Frame_KrakenD_Reachable 619559007.9996691 ns/iter 632718553.9998937 ns/iter 0.98
Schema_Iterator_ISO_Language 2665052.0378785296 ns/iter 2630808.6992478417 ns/iter 1.01
Schema_Frame_ISO_Language_Locations_To_JSON 303748131.00002027 ns/iter 304461295.99999946 ns/iter 1.00
Schema_Tracker_ISO_Language 33739281.761903666 ns/iter 35674687.400000945 ns/iter 0.95
Schema_Tracker_ISO_Language_To_JSON 32981516.428576253 ns/iter 36458638.684220396 ns/iter 0.90
Schema_Format_ISO_Language_To_JSON 112497606.49999036 ns/iter 114213762.00000091 ns/iter 0.98
Schema_Bundle_Meta_2020_12 1894235.663955385 ns/iter 1899181.6711892693 ns/iter 1.00
Schema_Frame_Many_Resources_References 400043393.50002736 ns/iter 392903380.9999964 ns/iter 1.02
Pointer_Object_Traverse 47.87178131458114 ns/iter 45.97311803736043 ns/iter 1.04
Pointer_Object_Try_Traverse 24.59448192635343 ns/iter 24.825453875786984 ns/iter 0.99
Pointer_Push_Back_Pointer_To_Weak_Pointer 161.6884123071651 ns/iter 171.5873920117916 ns/iter 0.94
Pointer_Walker_Schema_ISO_Language 3656250.4818646284 ns/iter 3723098.6162162353 ns/iter 0.98
JSON_Array_Of_Objects_Unique 427.3648961564664 ns/iter 429.4811429987105 ns/iter 1.00
JSON_Parse_1 11779.086219329778 ns/iter 11954.504202678629 ns/iter 0.99
JSON_Parse_Real 17621.125517995573 ns/iter 17459.848640979904 ns/iter 1.01
JSON_Parse_Decimal 112835.23883464874 ns/iter 112699.4187017715 ns/iter 1.00
JSON_Parse_Schema_ISO_Language 6747345.390476766 ns/iter 6640253.943925298 ns/iter 1.02
JSON_Fast_Hash_Helm_Chart_Lock 67.1159887579994 ns/iter 57.312178428180154 ns/iter 1.17
JSON_Equality_Helm_Chart_Lock 160.01262112294825 ns/iter 159.37444118712438 ns/iter 1.00
JSON_String_Equal/10 6.265111108266168 ns/iter 6.654104580224471 ns/iter 0.94
JSON_String_Equal/100 6.896098668026488 ns/iter 7.3025728180151575 ns/iter 0.94
JSON_String_Equal_Small_By_Perfect_Hash/10 0.6235692344880666 ns/iter 0.6249062367376752 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 13.469283519232542 ns/iter 14.939110032974426 ns/iter 0.90
JSON_String_Fast_Hash/10 1.9444972802998213 ns/iter 1.9454867389630843 ns/iter 1.00
JSON_String_Fast_Hash/100 1.9450509945519274 ns/iter 1.9457024635454676 ns/iter 1.00
JSON_String_Key_Hash/10 1.558928696786047 ns/iter 1.558416196933939 ns/iter 1.00
JSON_String_Key_Hash/100 12.432918924950636 ns/iter 12.425136494086926 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 2.803916529617259 ns/iter 2.4938147901088916 ns/iter 1.12
JSON_Object_Defines_Miss_Too_Small 2.8141082550214205 ns/iter 2.487114467829665 ns/iter 1.13
JSON_Object_Defines_Miss_Too_Large 2.802933259404046 ns/iter 2.486805676112308 ns/iter 1.13
Regex_Lower_S_Or_Upper_S_Asterisk 3.112186698213358 ns/iter 3.1086265006861167 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 3.113611754829682 ns/iter 3.1098202449102246 ns/iter 1.00
Regex_Period_Asterisk 3.1130846133371417 ns/iter 3.1092664981260567 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 3.113887344463828 ns/iter 3.1196045450907746 ns/iter 1.00
Regex_Period_Plus 3.423260751332568 ns/iter 3.4220369446509786 ns/iter 1.00
Regex_Period 3.4263473863148466 ns/iter 3.432509252836577 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 3.4214168569667622 ns/iter 3.421761219306837 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 3.421795733396729 ns/iter 3.4207067918650935 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 4.352750788129404 ns/iter 4.351911722371848 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 4.3505535704111065 ns/iter 4.349743204475743 ns/iter 1.00
Regex_Caret_X_Hyphen 13.683833691780064 ns/iter 13.688804054121407 ns/iter 1.00
Regex_Period_Md_Dollar 41.00355307355202 ns/iter 35.31415055336722 ns/iter 1.16
Regex_Caret_Slash_Period_Asterisk 8.116520431086798 ns/iter 9.326646924195964 ns/iter 0.87
Regex_Caret_Period_Range_Dollar 4.439758382688023 ns/iter 4.354163313270895 ns/iter 1.02
Regex_Nested_Backtrack 64.23438590184287 ns/iter 56.97391344219259 ns/iter 1.13

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

Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
@jviotti jviotti merged commit 65f8293 into main Feb 11, 2026
12 checks passed
@jviotti jviotti deleted the json-two-phases branch February 11, 2026 20:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant