Skip to content

Implement a fast Pointer::Token::property_equals helper#2616

Merged
jviotti merged 1 commit into
mainfrom
token-equals
Jul 8, 2026
Merged

Implement a fast Pointer::Token::property_equals helper#2616
jviotti merged 1 commit into
mainfrom
token-equals

Conversation

@jviotti

@jviotti jviotti commented Jul 8, 2026

Copy link
Copy Markdown
Member

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

Review in cubic

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

augmentcode Bot commented Jul 8, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: This PR introduces a fast helper for comparing JSON Pointer property tokens against an external string by leveraging the token’s precomputed property hash.

Changes:

  • Added Pointer::Token::property_equals(value, value_hash) to perform hash-first comparisons and avoid full string compares when the underlying property hash is “perfect”.
  • Updated GenericToken::operator== to treat perfect-hash property tokens that differ only by trailing NUL bytes as not equal by additionally checking string length.
  • Extended the JSON Pointer token test suite with coverage for short/long property equality, trailing-NUL edge cases, and imperfect-hash collision behavior.
  • Added tests ensuring property_equals works for both owning (Pointer) and non-owning (WeakPointer) tokens.

Technical Notes: The new logic mirrors the existing object-key hash strategy: perfect hashes encode bytes but not length, so a size check is used to disambiguate cases like "a" vs "a\0" without paying for a full string comparison.

🤖 Was this summary useful? React with 👍 or 👎

@augmentcode augmentcode Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Review completed. No suggestions at this time.

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

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

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

No issues found across 2 files

Re-trigger cubic

@jviotti jviotti merged commit 2091647 into main Jul 8, 2026
12 checks passed
@jviotti jviotti deleted the token-equals branch July 8, 2026 17:59

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

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: ca9637b Previous: 9690689 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.4617034100944934 ns/iter 1.9176020652701233 ns/iter 1.28
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.4626381730816225 ns/iter 1.910587123886501 ns/iter 1.29
Regex_Period_Asterisk 2.464290064534907 ns/iter 1.9094647260595916 ns/iter 1.29
Regex_Group_Period_Asterisk_Group 2.462013639559683 ns/iter 1.911081143876975 ns/iter 1.29
Regex_Period_Plus 3.5150096230767174 ns/iter 2.726896199662937 ns/iter 1.29
Regex_Period 3.867623997436079 ns/iter 2.1941771822195526 ns/iter 1.76
Regex_Caret_Period_Plus_Dollar 3.906450285176211 ns/iter 1.9206125922672521 ns/iter 2.03
Regex_Caret_Group_Period_Plus_Group_Dollar 3.5151538830590514 ns/iter 1.912250083843529 ns/iter 1.84
Regex_Caret_Period_Asterisk_Dollar 2.462359274117647 ns/iter 2.727496622794491 ns/iter 0.90
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.818622491521141 ns/iter 2.9997417546738805 ns/iter 0.94
Regex_Caret_X_Hyphen 5.645076464071119 ns/iter 5.456141216746529 ns/iter 1.03
Regex_Period_Md_Dollar 26.310263661442534 ns/iter 20.392052741283887 ns/iter 1.29
Regex_Caret_Slash_Period_Asterisk 7.384104626837603 ns/iter 5.180674936023667 ns/iter 1.43
Regex_Caret_Period_Range_Dollar 4.570981342321593 ns/iter 3.546489761228493 ns/iter 1.29
Regex_Nested_Backtrack 38.13379151413813 ns/iter 29.75009527994396 ns/iter 1.28
JSON_Array_Of_Objects_Unique 489.50995938430435 ns/iter 379.2128062759684 ns/iter 1.29
JSON_Parse_1 4667.60518777981 ns/iter 3621.585908305858 ns/iter 1.29
JSON_Parse_Real 5120.916413616627 ns/iter 3987.3772157219205 ns/iter 1.28
JSON_Parse_Decimal 7625.245525727442 ns/iter 5938.8905463795745 ns/iter 1.28
JSON_Parse_Schema_ISO_Language 3587065.8928567017 ns/iter 2860993.2090164344 ns/iter 1.25
JSON_Parse_Integer 3947.4503139553503 ns/iter 3063.414360989553 ns/iter 1.29
JSON_Parse_String_NonSSO_Plain 5083.609739999702 ns/iter 3965.835786641074 ns/iter 1.28
JSON_Parse_String_SSO_Plain 2767.0483538034796 ns/iter 2304.501388467266 ns/iter 1.20
JSON_Parse_String_Escape_Heavy 14477.002730826061 ns/iter 11291.9568289483 ns/iter 1.28
JSON_Parse_Object_Short_Keys 7974.400200167402 ns/iter 6234.0679407593525 ns/iter 1.28
JSON_Parse_Object_Scalar_Properties 4041.467388477964 ns/iter 3170.1351200749214 ns/iter 1.27
JSON_Parse_Object_Array_Properties 5543.372777077945 ns/iter 4517.461283371297 ns/iter 1.23
JSON_Parse_Object_Object_Properties 5525.980924756107 ns/iter 4508.680731853711 ns/iter 1.23
JSON_Parse_Nested_Containers 45718.45000958104 ns/iter 35655.85500793456 ns/iter 1.28
JSON_From_String_Copy 21.143387138539268 ns/iter 16.918513931744755 ns/iter 1.25
JSON_From_String_Temporary 18.654812926300018 ns/iter 14.739240669796056 ns/iter 1.27
JSON_Number_To_Double 22.921034540705737 ns/iter 17.71935289357677 ns/iter 1.29
JSON_Object_At_Last_Key/8 4.0278015217518774 ns/iter 3.1325657700321132 ns/iter 1.29
JSON_Object_At_Last_Key/32 13.398791171784335 ns/iter 10.375498543300484 ns/iter 1.29
JSON_Object_At_Last_Key/128 47.16027472213153 ns/iter 43.916603116693786 ns/iter 1.07
JSON_Object_At_Last_Key/512 367.9551462315718 ns/iter 284.7437975340937 ns/iter 1.29
JSON_Fast_Hash_Helm_Chart_Lock 68.96619968326907 ns/iter 53.44629788218696 ns/iter 1.29
JSON_Equality_Helm_Chart_Lock 173.52428071828564 ns/iter 131.18953381126911 ns/iter 1.32
JSON_Divisible_By_Decimal 253.27362142194067 ns/iter 196.52313548956556 ns/iter 1.29
JSON_String_Equal/10 5.625325808440618 ns/iter 4.363220779646338 ns/iter 1.29
JSON_String_Equal/100 6.348058861401022 ns/iter 5.182625661449054 ns/iter 1.22
JSON_String_Equal_Small_By_Perfect_Hash/10 1.055241377741145 ns/iter 0.8180606969160664 ns/iter 1.29
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 12.380461567960232 ns/iter 9.688004444656318 ns/iter 1.28
JSON_String_Fast_Hash/10 2.468427378544491 ns/iter 1.9117346086610525 ns/iter 1.29
JSON_String_Fast_Hash/100 2.4634959255340965 ns/iter 1.910470805803302 ns/iter 1.29
JSON_String_Key_Hash/10 2.4633034674353014 ns/iter 1.9095535541904003 ns/iter 1.29
JSON_String_Key_Hash/100 8.086061929862732 ns/iter 6.313891004926056 ns/iter 1.28
JSON_Object_Defines_Miss_Same_Length 3.204986882473943 ns/iter 2.4830641019478423 ns/iter 1.29
JSON_Object_Defines_Miss_Too_Small 4.226436958687813 ns/iter 3.2778570312188853 ns/iter 1.29
JSON_Object_Defines_Miss_Too_Large 2.964907848200303 ns/iter 2.320338943535785 ns/iter 1.28
Pointer_Object_Traverse 31.799860575920995 ns/iter 23.81837425966414 ns/iter 1.34
Pointer_Object_Try_Traverse 33.604622713882144 ns/iter 26.01801704164712 ns/iter 1.29
Pointer_Push_Back_Pointer_To_Weak_Pointer 191.00111603009614 ns/iter 143.7063314742393 ns/iter 1.33
Pointer_Walker_Schema_ISO_Language 2851870.0975608197 ns/iter 2204039.1687118877 ns/iter 1.29
Pointer_Maybe_Tracked_Deeply_Nested/0 1257218.487499959 ns/iter 1021137.3979885088 ns/iter 1.23
Pointer_Maybe_Tracked_Deeply_Nested/1 1614522.678160917 ns/iter 1264167.144144234 ns/iter 1.28
Pointer_Position_Tracker_Get_Deeply_Nested 750.1166799950328 ns/iter 567.884904954057 ns/iter 1.32
URITemplateRouter_Create 30320.596966272118 ns/iter 23148.342937481426 ns/iter 1.31
URITemplateRouter_Match 184.3717029333563 ns/iter 129.0863416130698 ns/iter 1.43
URITemplateRouter_Match_BasePath 223.96963063433574 ns/iter 154.84819458921032 ns/iter 1.45
URITemplateRouterView_Restore 9995.210990785026 ns/iter 7681.090774033954 ns/iter 1.30
URITemplateRouterView_Match 145.56455214594453 ns/iter 107.90779564005844 ns/iter 1.35
URITemplateRouterView_Match_BasePath 166.38870953175802 ns/iter 121.93608357592235 ns/iter 1.36
URITemplateRouterView_Arguments 470.94070131811856 ns/iter 354.6551430479639 ns/iter 1.33
JSONL_Parse_Large 9052949.480519602 ns/iter 7229737.886597231 ns/iter 1.25
JSONL_Parse_Large_GZIP 10716267.030768624 ns/iter 8565008.365853438 ns/iter 1.25
HTML_Build_Table_100000 72866989.8888812 ns/iter 58121471.16666704 ns/iter 1.25
HTML_Render_Table_100000 5747527.762294891 ns/iter 4787416.891156304 ns/iter 1.20
GZIP_Compress_ISO_Language_Set_3_Locations 35226202.750004634 ns/iter 27206216.38461405 ns/iter 1.29
GZIP_Decompress_ISO_Language_Set_3_Locations 4326734.345679064 ns/iter 3025346.5064934217 ns/iter 1.43
GZIP_Compress_ISO_Language_Set_3_Schema 2127718.814589457 ns/iter 1630830.6759907338 ns/iter 1.30
GZIP_Decompress_ISO_Language_Set_3_Schema 279116.88007968705 ns/iter 196830.56692912866 ns/iter 1.42
JOSE_VerifySignature_RS256 63797.66912501842 ns/iter 49590.246826016024 ns/iter 1.29
JOSE_VerifySignature_ES512 2679405.992337051 ns/iter 2182941.233644743 ns/iter 1.23

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

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

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: ca9637b Previous: 9690689 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 1.5768265685778813 ns/iter 2.3367350986864417 ns/iter 0.67
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.8885246088863326 ns/iter 2.690295508939656 ns/iter 0.70
Regex_Period_Asterisk 1.5678830242304915 ns/iter 2.3671994477198397 ns/iter 0.66
Regex_Group_Period_Asterisk_Group 1.570519910941903 ns/iter 2.9597829360493075 ns/iter 0.53
Regex_Period_Plus 1.9657398004076425 ns/iter 3.0552427841105696 ns/iter 0.64
Regex_Period 1.8961034361015527 ns/iter 3.4533254519679586 ns/iter 0.55
Regex_Caret_Period_Plus_Dollar 1.8860329207536926 ns/iter 2.751058900627139 ns/iter 0.69
Regex_Caret_Group_Period_Plus_Group_Dollar 1.8848172504342957 ns/iter 2.8358920222055284 ns/iter 0.66
Regex_Caret_Period_Asterisk_Dollar 1.6097089196976992 ns/iter 2.233086590709903 ns/iter 0.72
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.566706001340959 ns/iter 2.2246274183812003 ns/iter 0.70
Regex_Caret_X_Hyphen 5.645936210881279 ns/iter 7.706861650268998 ns/iter 0.73
Regex_Period_Md_Dollar 16.204502486087296 ns/iter 25.29129985711266 ns/iter 0.64
Regex_Caret_Slash_Period_Asterisk 4.083044483549821 ns/iter 5.9565695331708755 ns/iter 0.69
Regex_Caret_Period_Range_Dollar 1.8861564229893104 ns/iter 3.1633063589324095 ns/iter 0.60
Regex_Nested_Backtrack 24.14949326588723 ns/iter 36.39769665963571 ns/iter 0.66
JSON_Array_Of_Objects_Unique 334.294643390503 ns/iter 460.5525870826017 ns/iter 0.73
JSON_Parse_1 3374.9318686268666 ns/iter 5650.8926523577775 ns/iter 0.60
JSON_Parse_Real 4858.553261642363 ns/iter 8002.007313837046 ns/iter 0.61
JSON_Parse_Decimal 5226.681225214296 ns/iter 8120.123957410636 ns/iter 0.64
JSON_Parse_Schema_ISO_Language 2957341.976958384 ns/iter 5585085.663551369 ns/iter 0.53
JSON_Parse_Integer 2795.014523677076 ns/iter 3709.2034151630596 ns/iter 0.75
JSON_Parse_String_NonSSO_Plain 3266.694993713218 ns/iter 4793.062713999043 ns/iter 0.68
JSON_Parse_String_SSO_Plain 1649.1373006804563 ns/iter 2329.8178493386895 ns/iter 0.71
JSON_Parse_String_Escape_Heavy 15157.37724408179 ns/iter 21192.53813621967 ns/iter 0.72
JSON_Parse_Object_Short_Keys 5305.305958794292 ns/iter 6928.384758292875 ns/iter 0.77
JSON_Parse_Object_Scalar_Properties 2580.777332935154 ns/iter 3743.415934902913 ns/iter 0.69
JSON_Parse_Object_Array_Properties 3459.091488319602 ns/iter 4520.892816354344 ns/iter 0.77
JSON_Parse_Object_Object_Properties 3321.2133032420215 ns/iter 5526.918828209068 ns/iter 0.60
JSON_Parse_Nested_Containers 25873.165793680822 ns/iter 39491.35844155722 ns/iter 0.66
JSON_From_String_Copy 23.856944104330275 ns/iter 31.520061404283304 ns/iter 0.76
JSON_From_String_Temporary 19.76805544040567 ns/iter 26.520892991064688 ns/iter 0.75
JSON_Number_To_Double 32.67654859388151 ns/iter 46.73209671016029 ns/iter 0.70
JSON_Object_At_Last_Key/8 3.863238392713204 ns/iter 5.2667789190271 ns/iter 0.73
JSON_Object_At_Last_Key/32 12.201643903663388 ns/iter 16.30371033847575 ns/iter 0.75
JSON_Object_At_Last_Key/128 52.28768132627479 ns/iter 74.44256244404822 ns/iter 0.70
JSON_Object_At_Last_Key/512 182.29956114294924 ns/iter 283.4830466716793 ns/iter 0.64
JSON_Fast_Hash_Helm_Chart_Lock 60.243706023401316 ns/iter 90.45775580085854 ns/iter 0.67
JSON_Equality_Helm_Chart_Lock 159.62577170799008 ns/iter 215.21191743732413 ns/iter 0.74
JSON_Divisible_By_Decimal 193.96700054792555 ns/iter 237.5942209877618 ns/iter 0.82
JSON_String_Equal/10 6.820402532887941 ns/iter 9.055461338036098 ns/iter 0.75
JSON_String_Equal/100 6.63917988269369 ns/iter 9.487411724411476 ns/iter 0.70
JSON_String_Equal_Small_By_Perfect_Hash/10 0.7032120176376873 ns/iter 1.0442121372638857 ns/iter 0.67
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.0325959558813635 ns/iter 4.464307194993741 ns/iter 0.68
JSON_String_Fast_Hash/10 2.2227427787463547 ns/iter 2.849195187619609 ns/iter 0.78
JSON_String_Fast_Hash/100 1.8825942211672937 ns/iter 2.477547809253231 ns/iter 0.76
JSON_String_Key_Hash/10 1.2700359211713819 ns/iter 1.7154938738331365 ns/iter 0.74
JSON_String_Key_Hash/100 1.975026944250027 ns/iter 2.598211794537651 ns/iter 0.76
JSON_Object_Defines_Miss_Same_Length 2.5221365674696417 ns/iter 3.2221861859069243 ns/iter 0.78
JSON_Object_Defines_Miss_Too_Small 2.765953526800971 ns/iter 3.4417274603240067 ns/iter 0.80
JSON_Object_Defines_Miss_Too_Large 2.732316993723706 ns/iter 3.3996853580900432 ns/iter 0.80
Pointer_Object_Traverse 17.3058481180012 ns/iter 20.857592303574044 ns/iter 0.83
Pointer_Object_Try_Traverse 25.88237141263542 ns/iter 38.680622356951574 ns/iter 0.67
Pointer_Push_Back_Pointer_To_Weak_Pointer 144.6566820211763 ns/iter 202.4861964473643 ns/iter 0.71
Pointer_Walker_Schema_ISO_Language 3179076.6991151082 ns/iter 4888187.681416663 ns/iter 0.65
Pointer_Maybe_Tracked_Deeply_Nested/0 817253.7746805669 ns/iter 1091891.5078533867 ns/iter 0.75
Pointer_Maybe_Tracked_Deeply_Nested/1 1067631.1936935736 ns/iter 1929468.036529645 ns/iter 0.55
Pointer_Position_Tracker_Get_Deeply_Nested 325.4451594570854 ns/iter 493.2591166852817 ns/iter 0.66
URITemplateRouter_Create 21581.60757383918 ns/iter 31512.753435343984 ns/iter 0.68
URITemplateRouter_Match 152.17574077639634 ns/iter 206.56229637953686 ns/iter 0.74
URITemplateRouter_Match_BasePath 178.81412895597157 ns/iter 248.4695435641639 ns/iter 0.72
URITemplateRouterView_Restore 9126.278407327798 ns/iter 21164.64815571891 ns/iter 0.43
URITemplateRouterView_Match 123.07640807273619 ns/iter 174.75111137976523 ns/iter 0.70
URITemplateRouterView_Match_BasePath 136.56870457829223 ns/iter 215.8669935459971 ns/iter 0.63
URITemplateRouterView_Arguments 382.76821627690464 ns/iter 495.8146725367691 ns/iter 0.77
JSONL_Parse_Large 11819879.770491453 ns/iter 17741309.523809638 ns/iter 0.67
JSONL_Parse_Large_GZIP 12246880.842105001 ns/iter 16958916.675674584 ns/iter 0.72
HTML_Build_Table_100000 65773520.87501254 ns/iter 89406364.62500606 ns/iter 0.74
HTML_Render_Table_100000 2274293.007142855 ns/iter 6053728.991597351 ns/iter 0.38
GZIP_Compress_ISO_Language_Set_3_Locations 27778093.319998335 ns/iter 38245537.7142876 ns/iter 0.73
GZIP_Decompress_ISO_Language_Set_3_Locations 4747429.0687016025 ns/iter 7447142.428571503 ns/iter 0.64
GZIP_Compress_ISO_Language_Set_3_Schema 1494605.1847135138 ns/iter 2631897.4264704725 ns/iter 0.57
GZIP_Decompress_ISO_Language_Set_3_Schema 258663.96947407062 ns/iter 346550.0749718472 ns/iter 0.75
JOSE_VerifySignature_RS256 21096.149142261253 ns/iter 29668.875244713876 ns/iter 0.71
JOSE_VerifySignature_ES512 909591.8831168953 ns/iter 1265379.9506398493 ns/iter 0.72

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

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

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: ca9637b Previous: 9690689 Ratio
JOSE_VerifySignature_RS256 22182.15361369176 ns/iter 22213.538622062886 ns/iter 1.00
JOSE_VerifySignature_ES512 575597.0739524196 ns/iter 575856.5366859359 ns/iter 1.00
GZIP_Compress_ISO_Language_Set_3_Locations 36334865.94737023 ns/iter 38799583.50000202 ns/iter 0.94
GZIP_Decompress_ISO_Language_Set_3_Locations 4199405.392856734 ns/iter 4125966.9529408175 ns/iter 1.02
GZIP_Compress_ISO_Language_Set_3_Schema 2039426.7784257154 ns/iter 2086778.0686564823 ns/iter 0.98
GZIP_Decompress_ISO_Language_Set_3_Schema 379307.1079019135 ns/iter 380403.6599564965 ns/iter 1.00
HTML_Build_Table_100000 59059096.99999749 ns/iter 60134283.75000747 ns/iter 0.98
HTML_Render_Table_100000 1793969.0257730712 ns/iter 1909897.1065575008 ns/iter 0.94
JSONL_Parse_Large 12738469.21818321 ns/iter 13142788.26415152 ns/iter 0.97
JSONL_Parse_Large_GZIP 14190473.53061262 ns/iter 14567453.166667596 ns/iter 0.97
URITemplateRouter_Create 31323.95387297256 ns/iter 30658.489166121806 ns/iter 1.02
URITemplateRouter_Match 158.58800371101697 ns/iter 160.52693316128423 ns/iter 0.99
URITemplateRouter_Match_BasePath 185.94673409633626 ns/iter 185.53490026702724 ns/iter 1.00
URITemplateRouterView_Restore 8223.975548972869 ns/iter 8449.665494636738 ns/iter 0.97
URITemplateRouterView_Match 122.33597895313777 ns/iter 122.26177110485355 ns/iter 1.00
URITemplateRouterView_Match_BasePath 141.29288443865843 ns/iter 140.94072910889048 ns/iter 1.00
URITemplateRouterView_Arguments 466.3491694810153 ns/iter 469.3215418950248 ns/iter 0.99
Pointer_Object_Traverse 33.043701841322154 ns/iter 33.05406947172126 ns/iter 1.00
Pointer_Object_Try_Traverse 23.02321764120237 ns/iter 23.0294465315737 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 158.3329692425968 ns/iter 150.40293500030938 ns/iter 1.05
Pointer_Walker_Schema_ISO_Language 2762288.2140076756 ns/iter 2726551.9806203977 ns/iter 1.01
Pointer_Maybe_Tracked_Deeply_Nested/0 1828487.7893332427 ns/iter 1825313.7493332662 ns/iter 1.00
Pointer_Maybe_Tracked_Deeply_Nested/1 1676051.5441528978 ns/iter 1688830.2915662916 ns/iter 0.99
Pointer_Position_Tracker_Get_Deeply_Nested 537.5129492288307 ns/iter 559.5896915962916 ns/iter 0.96
JSON_Array_Of_Objects_Unique 486.30478586439875 ns/iter 494.4790312453994 ns/iter 0.98
JSON_Parse_1 9412.92334181898 ns/iter 9434.41593634134 ns/iter 1.00
JSON_Parse_Real 7537.2287988628705 ns/iter 7527.385057221667 ns/iter 1.00
JSON_Parse_Decimal 12466.032592644831 ns/iter 12638.46902271908 ns/iter 0.99
JSON_Parse_Schema_ISO_Language 6331767.171171303 ns/iter 6368248.642201911 ns/iter 0.99
JSON_Parse_Integer 5621.250902671998 ns/iter 5646.955527668765 ns/iter 1.00
JSON_Parse_String_NonSSO_Plain 11850.007099271072 ns/iter 11581.688044469282 ns/iter 1.02
JSON_Parse_String_SSO_Plain 4670.519253870718 ns/iter 4665.901657605662 ns/iter 1.00
JSON_Parse_String_Escape_Heavy 24352.510032452272 ns/iter 24546.57762044683 ns/iter 0.99
JSON_Parse_Object_Short_Keys 13124.627487456493 ns/iter 13325.557612971195 ns/iter 0.98
JSON_Parse_Object_Scalar_Properties 6771.172869797943 ns/iter 6819.640253749675 ns/iter 0.99
JSON_Parse_Object_Array_Properties 11295.097649068292 ns/iter 11258.154872819656 ns/iter 1.00
JSON_Parse_Object_Object_Properties 11582.90632237036 ns/iter 11418.406620351303 ns/iter 1.01
JSON_Parse_Nested_Containers 95092.68850903011 ns/iter 94644.53667482769 ns/iter 1.00
JSON_From_String_Copy 18.347293503780744 ns/iter 18.361049586999773 ns/iter 1.00
JSON_From_String_Temporary 15.348203274379985 ns/iter 15.351339023052045 ns/iter 1.00
JSON_Number_To_Double 20.587394902011432 ns/iter 20.824808119342922 ns/iter 0.99
JSON_Object_At_Last_Key/8 3.741527121294421 ns/iter 3.7457862471154217 ns/iter 1.00
JSON_Object_At_Last_Key/32 11.904120717785009 ns/iter 11.884342882493307 ns/iter 1.00
JSON_Object_At_Last_Key/128 48.581328956685425 ns/iter 48.63419757886589 ns/iter 1.00
JSON_Object_At_Last_Key/512 356.40352381080174 ns/iter 358.64163068353315 ns/iter 0.99
JSON_Fast_Hash_Helm_Chart_Lock 75.3596386529887 ns/iter 75.46918112811922 ns/iter 1.00
JSON_Equality_Helm_Chart_Lock 162.30018502658584 ns/iter 160.25938059965182 ns/iter 1.01
JSON_Divisible_By_Decimal 246.51197315745208 ns/iter 245.96225696950043 ns/iter 1.00
JSON_String_Equal/10 6.031462091983382 ns/iter 6.003016478550043 ns/iter 1.00
JSON_String_Equal/100 6.622421864918341 ns/iter 6.629936280154266 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 0.623325044489647 ns/iter 0.623224725085604 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 25.191565233132046 ns/iter 25.196313988262496 ns/iter 1.00
JSON_String_Fast_Hash/10 2.5678695995361336 ns/iter 2.57542219783141 ns/iter 1.00
JSON_String_Fast_Hash/100 2.568265093316702 ns/iter 2.5685050544685395 ns/iter 1.00
JSON_String_Key_Hash/10 1.246812494123903 ns/iter 1.2479497645521695 ns/iter 1.00
JSON_String_Key_Hash/100 12.443904848128726 ns/iter 12.448373846723074 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 2.8037563507126513 ns/iter 2.8166721610545995 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 3.1166626444845464 ns/iter 3.1173022931219245 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.115197168034948 ns/iter 3.1142657371978206 ns/iter 1.00
Regex_Lower_S_Or_Upper_S_Asterisk 0.6276780173406334 ns/iter 0.6229077153336328 ns/iter 1.01
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 0.9348018471174275 ns/iter 0.9353135389835 ns/iter 1.00
Regex_Period_Asterisk 0.9344795237613533 ns/iter 0.9340282622272734 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 0.6255126108354111 ns/iter 0.6229981120858729 ns/iter 1.00
Regex_Period_Plus 0.6232734928246245 ns/iter 0.6233983091048458 ns/iter 1.00
Regex_Period 0.934937494882447 ns/iter 0.9345724424085189 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 0.9351525453429897 ns/iter 0.9341807138563061 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 0.6226531031935113 ns/iter 0.6227151610045197 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 0.6234579750843525 ns/iter 0.6233929874598133 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 0.9345502256305229 ns/iter 0.942122663231795 ns/iter 0.99
Regex_Caret_X_Hyphen 4.054853933744969 ns/iter 4.052417881884295 ns/iter 1.00
Regex_Period_Md_Dollar 27.572304679181716 ns/iter 29.561229930302225 ns/iter 0.93
Regex_Caret_Slash_Period_Asterisk 4.6962128670215755 ns/iter 4.669534412471335 ns/iter 1.01
Regex_Caret_Period_Range_Dollar 1.5570163747048171 ns/iter 1.5573809728339134 ns/iter 1.00
Regex_Nested_Backtrack 37.67368962985906 ns/iter 38.24846401095692 ns/iter 0.98

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

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

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: ca9637b Previous: 9690689 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.4404969838835253 ns/iter 5.014588999999887 ns/iter 0.49
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.439815957098844 ns/iter 4.954212411819413 ns/iter 0.49
Regex_Period_Asterisk 2.443540175842936 ns/iter 4.956647999999859 ns/iter 0.49
Regex_Group_Period_Asterisk_Group 2.4454513365562014 ns/iter 4.968906999999945 ns/iter 0.49
Regex_Period_Plus 2.6569249999998386 ns/iter 4.766038951956947 ns/iter 0.56
Regex_Period 2.6468965824584907 ns/iter 4.8424165286646135 ns/iter 0.55
Regex_Caret_Period_Plus_Dollar 2.662302073516354 ns/iter 4.7499617740517674 ns/iter 0.56
Regex_Caret_Group_Period_Plus_Group_Dollar 2.638193189607279 ns/iter 4.662734374998934 ns/iter 0.57
Regex_Caret_Period_Asterisk_Dollar 2.4251631669355183 ns/iter 5.0013625000003366 ns/iter 0.48
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.444544640129561 ns/iter 4.981852999999319 ns/iter 0.49
Regex_Caret_X_Hyphen 5.860069642855998 ns/iter 8.002984821428884 ns/iter 0.73
Regex_Period_Md_Dollar 30.42406431466415 ns/iter 60.92175892858011 ns/iter 0.50
Regex_Caret_Slash_Period_Asterisk 5.570968750000865 ns/iter 7.539266741071669 ns/iter 0.74
Regex_Caret_Period_Range_Dollar 3.3055523489132006 ns/iter 5.408995000000231 ns/iter 0.61
Regex_Nested_Backtrack 43.56172660896185 ns/iter 84.76931919642843 ns/iter 0.51
JSON_Array_Of_Objects_Unique 514.1183000000638 ns/iter 680.8550000000325 ns/iter 0.76
JSON_Parse_1 8029.5167410732965 ns/iter 9496.933049407005 ns/iter 0.85
JSON_Parse_Real 12180.653571428073 ns/iter 17023.670747062446 ns/iter 0.72
JSON_Parse_Decimal 9418.457953310073 ns/iter 11185.343750000242 ns/iter 0.84
JSON_Parse_Schema_ISO_Language 7685787.777775962 ns/iter 8103038.888889892 ns/iter 0.95
JSON_Parse_Integer 4523.96500000134 ns/iter 5973.933928570675 ns/iter 0.76
JSON_Parse_String_NonSSO_Plain 6680.008035715446 ns/iter 8307.313616072573 ns/iter 0.80
JSON_Parse_String_SSO_Plain 2872.6047440711077 ns/iter 3797.365361848554 ns/iter 0.76
JSON_Parse_String_Escape_Heavy 22877.543749999062 ns/iter 22430.684374995733 ns/iter 1.02
JSON_Parse_Object_Short_Keys 9262.547042199183 ns/iter 13509.825625778447 ns/iter 0.69
JSON_Parse_Object_Scalar_Properties 4871.075175066189 ns/iter 6723.31249999912 ns/iter 0.72
JSON_Parse_Object_Array_Properties 8708.77343749957 ns/iter 11910.892857140912 ns/iter 0.73
JSON_Parse_Object_Object_Properties 8826.29541832889 ns/iter 11846.571875000933 ns/iter 0.75
JSON_Parse_Nested_Containers 66701.4955356799 ns/iter 83120.98214286071 ns/iter 0.80
JSON_From_String_Copy 46.94126220851736 ns/iter 63.798928571421655 ns/iter 0.74
JSON_From_String_Temporary 53.401455357158866 ns/iter 86.14349615429767 ns/iter 0.62
JSON_Number_To_Double 91.27471467523826 ns/iter 134.70851785716116 ns/iter 0.68
JSON_Object_At_Last_Key/8 6.774173214284117 ns/iter 7.13012723214287 ns/iter 0.95
JSON_Object_At_Last_Key/32 20.900499999996214 ns/iter 26.18302857142193 ns/iter 0.80
JSON_Object_At_Last_Key/128 93.39137529502737 ns/iter 113.2914375000027 ns/iter 0.82
JSON_Object_At_Last_Key/512 319.1844196428357 ns/iter 457.7089285715731 ns/iter 0.70
JSON_Fast_Hash_Helm_Chart_Lock 82.56998883925552 ns/iter 123.73215519053437 ns/iter 0.67
JSON_Equality_Helm_Chart_Lock 206.22908900767075 ns/iter 204.1456069577422 ns/iter 1.01
JSON_Divisible_By_Decimal 266.1657105430714 ns/iter 372.94049879198616 ns/iter 0.71
JSON_String_Equal/10 7.975608258930273 ns/iter 10.086237008541953 ns/iter 0.79
JSON_String_Equal/100 10.799692187504206 ns/iter 11.41288750000058 ns/iter 0.95
JSON_String_Equal_Small_By_Perfect_Hash/10 1.1686717857141307 ns/iter 2.1783684374995005 ns/iter 0.54
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 9.364506654624718 ns/iter 21.225422382485384 ns/iter 0.44
JSON_String_Fast_Hash/10 4.091179687498884 ns/iter 6.6488392857146605 ns/iter 0.62
JSON_String_Fast_Hash/100 4.095807284098763 ns/iter 6.669091071429989 ns/iter 0.61
JSON_String_Key_Hash/10 3.2241790178570033 ns/iter 4.996951000000536 ns/iter 0.65
JSON_String_Key_Hash/100 7.642925223214954 ns/iter 11.077242187500502 ns/iter 0.69
JSON_Object_Defines_Miss_Same_Length 5.101079999999456 ns/iter 4.715730814098661 ns/iter 1.08
JSON_Object_Defines_Miss_Too_Small 4.489526238978335 ns/iter 4.6229779121043135 ns/iter 0.97
JSON_Object_Defines_Miss_Too_Large 4.9648374999995735 ns/iter 4.6182394433038905 ns/iter 1.08
Pointer_Object_Traverse 46.422068000477445 ns/iter 65.68578571428166 ns/iter 0.71
Pointer_Object_Try_Traverse 53.25020535715501 ns/iter 69.27046428572226 ns/iter 0.77
Pointer_Push_Back_Pointer_To_Weak_Pointer 184.64002541430082 ns/iter 172.1335115267591 ns/iter 1.07
Pointer_Walker_Schema_ISO_Language 11156820.312500315 ns/iter 13601373.99999985 ns/iter 0.82
Pointer_Maybe_Tracked_Deeply_Nested/0 2115054.9999987334 ns/iter 2447594.6969692525 ns/iter 0.86
Pointer_Maybe_Tracked_Deeply_Nested/1 3867022.4598936914 ns/iter 3747784.3575428445 ns/iter 1.03
Pointer_Position_Tracker_Get_Deeply_Nested 510.0908277635483 ns/iter 604.5641741072266 ns/iter 0.84
URITemplateRouter_Create 38562.62276783643 ns/iter 37857.946428562376 ns/iter 1.02
URITemplateRouter_Match 252.5547499999448 ns/iter 225.90609375001236 ns/iter 1.12
URITemplateRouter_Match_BasePath 286.7560507480904 ns/iter 262.8266428571838 ns/iter 1.09
URITemplateRouterView_Restore 24195.617857133453 ns/iter 24353.971428573524 ns/iter 0.99
URITemplateRouterView_Match 166.31404017855644 ns/iter 172.65748477620514 ns/iter 0.96
URITemplateRouterView_Match_BasePath 184.49479325849603 ns/iter 195.5092546647736 ns/iter 0.94
URITemplateRouterView_Arguments 446.8620454834 ns/iter 610.4723999999351 ns/iter 0.73
JSONL_Parse_Large 27373020.00001364 ns/iter 32764571.428569544 ns/iter 0.84
JSONL_Parse_Large_GZIP 27209287.99999456 ns/iter 33350514.285714217 ns/iter 0.82
HTML_Build_Table_100000 93395799.99998803 ns/iter 92436014.2856975 ns/iter 1.01
HTML_Render_Table_100000 12536758.928571803 ns/iter 8218447.77777743 ns/iter 1.53
GZIP_Compress_ISO_Language_Set_3_Locations 33519229.99997896 ns/iter 38005052.63158908 ns/iter 0.88
GZIP_Decompress_ISO_Language_Set_3_Locations 11644198.43750153 ns/iter 10805284.374999503 ns/iter 1.08
GZIP_Compress_ISO_Language_Set_3_Schema 1981349.597854961 ns/iter 2302826.6666668956 ns/iter 0.86
GZIP_Decompress_ISO_Language_Set_3_Schema 675984.2857141913 ns/iter 608427.1205357388 ns/iter 1.11
JOSE_VerifySignature_RS256 19869.8885729197 ns/iter 23719.949999994176 ns/iter 0.84
JOSE_VerifySignature_ES512 1205213.125000171 ns/iter 1520537.0535714533 ns/iter 0.79

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

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