Skip to content

Increase precision of JSON::divisible_by#2330

Merged
jviotti merged 1 commit intomainfrom
divisible-by-fixes
Apr 1, 2026
Merged

Increase precision of JSON::divisible_by#2330
jviotti merged 1 commit intomainfrom
divisible-by-fixes

Conversation

@jviotti
Copy link
Copy Markdown
Member

@jviotti jviotti commented Apr 1, 2026

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

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

@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 6 files

Copy link
Copy Markdown

@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: f2842b4 Previous: 57e8c91 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.0411254219021973 ns/iter 3.1280531257476936 ns/iter 0.65
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.0172148592246266 ns/iter 3.1126551092388293 ns/iter 0.65
Regex_Period_Asterisk 2.024505178060856 ns/iter 3.1137317583556214 ns/iter 0.65
Regex_Group_Period_Asterisk_Group 2.0173050484382613 ns/iter 3.1164548039147495 ns/iter 0.65
Regex_Period_Plus 2.3046441902990398 ns/iter 3.114788164856425 ns/iter 0.74
Regex_Period 2.3046641646499313 ns/iter 2.921475884067222 ns/iter 0.79
Regex_Caret_Period_Plus_Dollar 2.3083827795865766 ns/iter 3.1161232232889655 ns/iter 0.74
Regex_Caret_Group_Period_Plus_Group_Dollar 2.3052063546855504 ns/iter 3.113870304614636 ns/iter 0.74
Regex_Caret_Period_Asterisk_Dollar 2.0245792739907373 ns/iter 3.737930986120157 ns/iter 0.54
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.0171171322562635 ns/iter 3.737411810939986 ns/iter 0.54
Regex_Caret_X_Hyphen 8.643380515287511 ns/iter 13.073785834943743 ns/iter 0.66
Regex_Period_Md_Dollar 25.210787680204973 ns/iter 27.35352335888149 ns/iter 0.92
Regex_Caret_Slash_Period_Asterisk 8.323800343333259 ns/iter 6.542595521461999 ns/iter 1.27
Regex_Caret_Period_Range_Dollar 2.376838794687375 ns/iter 3.1188379910342037 ns/iter 0.76
Regex_Nested_Backtrack 43.786600948841226 ns/iter 64.27270040331042 ns/iter 0.68
JSON_Array_Of_Objects_Unique 344.5239856713555 ns/iter 393.3261321114585 ns/iter 0.88
JSON_Parse_1 5122.749229634982 ns/iter 6019.837084990959 ns/iter 0.85
JSON_Parse_Real 10213.829396325567 ns/iter 10684.76153422803 ns/iter 0.96
JSON_Parse_Decimal 9856.844021923846 ns/iter 11750.668292926895 ns/iter 0.84
JSON_Parse_Schema_ISO_Language 3175595.9185522227 ns/iter 3627849.585492407 ns/iter 0.88
JSON_Fast_Hash_Helm_Chart_Lock 48.93189228056902 ns/iter 53.54327762935155 ns/iter 0.91
JSON_Equality_Helm_Chart_Lock 140.01035543445735 ns/iter 156.65304193235218 ns/iter 0.89
JSON_Divisible_By_Decimal 251.2979353762015 ns/iter 596.8773303872817 ns/iter 0.42
JSON_String_Equal/10 4.615085785714993 ns/iter 6.234441568012001 ns/iter 0.74
JSON_String_Equal/100 5.76153562899231 ns/iter 6.856253760476701 ns/iter 0.84
JSON_String_Equal_Small_By_Perfect_Hash/10 0.8641196495193517 ns/iter 0.93754609098282 ns/iter 0.92
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 9.795292926934849 ns/iter 14.630788056195867 ns/iter 0.67
JSON_String_Fast_Hash/10 1.729917999467347 ns/iter 2.179856679519201 ns/iter 0.79
JSON_String_Fast_Hash/100 1.735542723072877 ns/iter 2.180214591345204 ns/iter 0.80
JSON_String_Key_Hash/10 1.7281168706679115 ns/iter 2.647917646792272 ns/iter 0.65
JSON_String_Key_Hash/100 7.200782779891343 ns/iter 9.026718151209796 ns/iter 0.80
JSON_Object_Defines_Miss_Same_Length 3.627968361138739 ns/iter 3.74233978332493 ns/iter 0.97
JSON_Object_Defines_Miss_Too_Small 3.4798593176040318 ns/iter 3.7437334607026798 ns/iter 0.93
JSON_Object_Defines_Miss_Too_Large 3.5707953546002758 ns/iter 3.7419323449989057 ns/iter 0.95
Pointer_Object_Traverse 24.433931530635167 ns/iter 25.004863044861843 ns/iter 0.98
Pointer_Object_Try_Traverse 28.368490988470057 ns/iter 28.01146839870299 ns/iter 1.01
Pointer_Push_Back_Pointer_To_Weak_Pointer 158.74768614413537 ns/iter 185.3363841905215 ns/iter 0.86
Pointer_Walker_Schema_ISO_Language 3023083.895652195 ns/iter 3004734.978448247 ns/iter 1.01
Pointer_Maybe_Tracked_Deeply_Nested/0 1134739.3996763686 ns/iter 1452444.9511677949 ns/iter 0.78
Pointer_Maybe_Tracked_Deeply_Nested/1 1966139.4385474264 ns/iter 1789288.6889458962 ns/iter 1.10
Pointer_Position_Tracker_Get_Deeply_Nested 731.0546698019633 ns/iter 624.7237483637653 ns/iter 1.17
Schema_Frame_WoT_References 4590511.914473513 ns/iter 5191049.962962569 ns/iter 0.88
Schema_Frame_OMC_References 19140271.2702705 ns/iter 21380766.30303038 ns/iter 0.90
Schema_Frame_OMC_Locations 17629292.17499902 ns/iter 19475553.777776137 ns/iter 0.91
Schema_Frame_ISO_Language_Locations 90668052.14285979 ns/iter 96390371.33333279 ns/iter 0.94
Schema_Frame_KrakenD_References 35521367.05000066 ns/iter 37917610.352939636 ns/iter 0.94
Schema_Frame_KrakenD_Reachable 775905964.999879 ns/iter 575903468.0000923 ns/iter 1.35
Schema_Iterator_ISO_Language 2190216.847351992 ns/iter 2275138.720394777 ns/iter 0.96
Schema_Frame_ISO_Language_Locations_To_JSON 94677378.57143481 ns/iter 93144221.71428303 ns/iter 1.02
Schema_Tracker_ISO_Language 4561343.870129981 ns/iter 4857169.869862838 ns/iter 0.94
Schema_Tracker_ISO_Language_To_JSON 18897407.388888292 ns/iter 19215907.194447055 ns/iter 0.98
Schema_Format_ISO_Language_To_JSON 94288226.42855395 ns/iter 104721500.14288673 ns/iter 0.90
Schema_Bundle_Meta_2020_12 1524937.9344993236 ns/iter 1672816.3390231514 ns/iter 0.91
Schema_Frame_Many_Resources_References 371854942.50002193 ns/iter 370014723.4999918 ns/iter 1.00
Alterschema_Check_Readibility_ISO_Language_Set_3 184248497.74999076 ns/iter 214655373.99997935 ns/iter 0.86
Alterschema_Check_Readibility_OMC 30827295.999998845 ns/iter 33481885.095235545 ns/iter 0.92
Alterschema_Apply_Readibility_KrakenD 533166679.9999084 ns/iter 598656252.0000689 ns/iter 0.89
Alterschema_Check_Invalid_External_Refs 95596853.87499428 ns/iter 123007945.79998636 ns/iter 0.78
EditorSchema_ForEditor_EmbeddedResources 12527981.92856476 ns/iter 13822412.500003338 ns/iter 0.91
URITemplateRouter_Create 13040.816151682238 ns/iter 15958.608224382499 ns/iter 0.82
URITemplateRouter_Match 153.0000334964995 ns/iter 172.17309483245205 ns/iter 0.89
URITemplateRouterView_Restore 2457.4495729052296 ns/iter 4965.693219430342 ns/iter 0.49
URITemplateRouterView_Match 123.20321076531994 ns/iter 146.32811567730798 ns/iter 0.84
URITemplateRouterView_Arguments 423.6912271637593 ns/iter 474.1837782389058 ns/iter 0.89
HTML_Build_Table_100000 71087216.39999658 ns/iter 63329904.63637212 ns/iter 1.12
HTML_Render_Table_100000 10021723.205882689 ns/iter 5349261.858208959 ns/iter 1.87

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

Copy link
Copy Markdown

@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: f2842b4 Previous: 57e8c91 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 1.7850600883688004 ns/iter 1.7101742784054383 ns/iter 1.04
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.7243804891702526 ns/iter 1.718208613892979 ns/iter 1.00
Regex_Period_Asterisk 1.742872015563589 ns/iter 1.6924050861917048 ns/iter 1.03
Regex_Group_Period_Asterisk_Group 1.7172929071070615 ns/iter 1.7680202825242464 ns/iter 0.97
Regex_Period_Plus 2.100685853895368 ns/iter 2.048092012376816 ns/iter 1.03
Regex_Period 2.0573761324861555 ns/iter 2.158432405396186 ns/iter 0.95
Regex_Caret_Period_Plus_Dollar 2.0674645762553703 ns/iter 2.1079139393171906 ns/iter 0.98
Regex_Caret_Group_Period_Plus_Group_Dollar 2.0703921291912115 ns/iter 1.9409457669903523 ns/iter 1.07
Regex_Caret_Period_Asterisk_Dollar 1.8439919890197187 ns/iter 1.6674302208871257 ns/iter 1.11
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.7852063896249961 ns/iter 1.7449764684693403 ns/iter 1.02
Regex_Caret_X_Hyphen 6.6809231053427744 ns/iter 6.566113385129091 ns/iter 1.02
Regex_Period_Md_Dollar 21.243900029010582 ns/iter 25.544452470384748 ns/iter 0.83
Regex_Caret_Slash_Period_Asterisk 5.146460223886365 ns/iter 5.497452920001252 ns/iter 0.94
Regex_Caret_Period_Range_Dollar 1.8782083328893242 ns/iter 1.8022090554539754 ns/iter 1.04
Regex_Nested_Backtrack 26.055102173403867 ns/iter 27.246848606211394 ns/iter 0.96
JSON_Array_Of_Objects_Unique 347.00979045783026 ns/iter 395.77097336557006 ns/iter 0.88
JSON_Parse_1 4108.934749086918 ns/iter 4261.574239444162 ns/iter 0.96
JSON_Parse_Real 6443.277408055495 ns/iter 7277.0613749563945 ns/iter 0.89
JSON_Parse_Decimal 8146.22108192761 ns/iter 7801.008918946962 ns/iter 1.04
JSON_Parse_Schema_ISO_Language 4004233.0406976794 ns/iter 3186333.1038260334 ns/iter 1.26
JSON_Fast_Hash_Helm_Chart_Lock 62.92239590729713 ns/iter 58.048214648786306 ns/iter 1.08
JSON_Equality_Helm_Chart_Lock 137.76089345114335 ns/iter 127.29989465815413 ns/iter 1.08
JSON_Divisible_By_Decimal 175.42810413218862 ns/iter 432.4619532639519 ns/iter 0.41
JSON_String_Equal/10 6.847075418627162 ns/iter 6.422026009271628 ns/iter 1.07
JSON_String_Equal/100 6.725174793497649 ns/iter 6.040157894174085 ns/iter 1.11
JSON_String_Equal_Small_By_Perfect_Hash/10 0.8555628724098956 ns/iter 0.7324223072271426 ns/iter 1.17
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.307917822910173 ns/iter 3.2148545023250277 ns/iter 1.03
JSON_String_Fast_Hash/10 2.4984430575059378 ns/iter 2.2429718651452655 ns/iter 1.11
JSON_String_Fast_Hash/100 2.175013922437033 ns/iter 2.0907555776687645 ns/iter 1.04
JSON_String_Key_Hash/10 1.4876811450709408 ns/iter 1.700374277093008 ns/iter 0.87
JSON_String_Key_Hash/100 2.2246776176460994 ns/iter 2.6272614341530245 ns/iter 0.85
JSON_Object_Defines_Miss_Same_Length 2.499897918222656 ns/iter 2.27134913027759 ns/iter 1.10
JSON_Object_Defines_Miss_Too_Small 2.4022969506320124 ns/iter 2.505598820757799 ns/iter 0.96
JSON_Object_Defines_Miss_Too_Large 2.492621903132009 ns/iter 2.4782666335017227 ns/iter 1.01
Pointer_Object_Traverse 15.228183375071943 ns/iter 14.888687207065578 ns/iter 1.02
Pointer_Object_Try_Traverse 20.75527991864935 ns/iter 19.782598910155524 ns/iter 1.05
Pointer_Push_Back_Pointer_To_Weak_Pointer 157.6573196802336 ns/iter 149.98986830418661 ns/iter 1.05
Pointer_Walker_Schema_ISO_Language 4437962.412587447 ns/iter 3689482.3212123537 ns/iter 1.20
Pointer_Maybe_Tracked_Deeply_Nested/0 1065692.2205438525 ns/iter 995364.8969851781 ns/iter 1.07
Pointer_Maybe_Tracked_Deeply_Nested/1 1498815.5010754664 ns/iter 1393433.2662602433 ns/iter 1.08
Pointer_Position_Tracker_Get_Deeply_Nested 359.6127655057751 ns/iter 375.27823437727636 ns/iter 0.96
Schema_Frame_WoT_References 5622684.985815853 ns/iter 5862672.910000129 ns/iter 0.96
Schema_Frame_OMC_References 26055790.11110927 ns/iter 34444158.35000427 ns/iter 0.76
Schema_Frame_OMC_Locations 22599411.290321592 ns/iter 24064648.148152158 ns/iter 0.94
Schema_Frame_ISO_Language_Locations 76558981.44443856 ns/iter 79114744.0000129 ns/iter 0.97
Schema_Frame_KrakenD_References 46456023.43749999 ns/iter 50820705.35713358 ns/iter 0.91
Schema_Frame_KrakenD_Reachable 428797270.9999508 ns/iter 556223667.0000402 ns/iter 0.77
Schema_Iterator_ISO_Language 1968054.0179641086 ns/iter 1822097.6388060516 ns/iter 1.08
Schema_Frame_ISO_Language_Locations_To_JSON 74610232.14286147 ns/iter 84416494.14284517 ns/iter 0.88
Schema_Tracker_ISO_Language 8917083.3333335 ns/iter 8260642.700000176 ns/iter 1.08
Schema_Tracker_ISO_Language_To_JSON 16031360.24999922 ns/iter 13423855.428569295 ns/iter 1.19
Schema_Format_ISO_Language_To_JSON 76587652.88892432 ns/iter 77469666.66665381 ns/iter 0.99
Schema_Bundle_Meta_2020_12 1317381.9632980467 ns/iter 1199779.0519070895 ns/iter 1.10
Schema_Frame_Many_Resources_References 285408625.0000023 ns/iter 263897555.6666689 ns/iter 1.08
Alterschema_Check_Readibility_ISO_Language_Set_3 142922224.99998388 ns/iter 175885991.5999892 ns/iter 0.81
Alterschema_Check_Readibility_OMC 31362488.636359975 ns/iter 38427644.46665873 ns/iter 0.82
Alterschema_Apply_Readibility_KrakenD 477752707.9999686 ns/iter 516719959.0000564 ns/iter 0.92
Alterschema_Check_Invalid_External_Refs 66688937.50000962 ns/iter 70250483.29999208 ns/iter 0.95
EditorSchema_ForEditor_EmbeddedResources 12417301.349997463 ns/iter 10943811.878787942 ns/iter 1.13
URITemplateRouter_Create 17535.813171403435 ns/iter 15535.55098848391 ns/iter 1.13
URITemplateRouter_Match 171.97231490668122 ns/iter 157.63119406329275 ns/iter 1.09
URITemplateRouterView_Restore 12868.100995091312 ns/iter 12025.498114590813 ns/iter 1.07
URITemplateRouterView_Match 137.92116786816183 ns/iter 128.7200298552171 ns/iter 1.07
URITemplateRouterView_Arguments 419.6425935305975 ns/iter 396.4026639040322 ns/iter 1.06
HTML_Build_Table_100000 68464825.00000092 ns/iter 72064995.89999565 ns/iter 0.95
HTML_Render_Table_100000 4387395.718918998 ns/iter 3090178.6582728704 ns/iter 1.42

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

@augmentcode
Copy link
Copy Markdown

augmentcode bot commented Apr 1, 2026

🤖 Augment PR Summary

Summary: This PR improves the precision and robustness of JSON::divisible_by when working with IEEE-754 doubles that suffer from representation/rounding artifacts (e.g., 0.1, 0.01).

Changes:

  • Updates the real/real JSON::divisible_by path to keep the fast “integral division” check, but fall back to Decimal-based divisibility when floating-point division is not an exact integer.
  • Introduces Decimal::strict_from(double), converting doubles through their shortest round-trip string form to avoid common binary-float precision artifacts.
  • Switches mixed Decimal/real divisibility checks to use Decimal::strict_from instead of direct Decimal-from-double construction.
  • Adds extensive new unit tests covering divisibility across Decimal/real/integer combinations for small scales (0.1/0.01/0.001/0.0001), negatives, and larger values.
  • Adds dedicated tests for Decimal::strict_from round-tripping expected decimal strings.

Technical Notes: The behavior change primarily targets cases where floating-point arithmetic would previously report “not divisible” due to tiny rounding errors, by using Decimal arithmetic only when needed.

🤖 Was this summary useful? React with 👍 or 👎

Copy link
Copy Markdown

@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. 1 suggestion posted.

Fix All in Augment

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

return result;
}

auto Decimal::strict_from(const double value) -> Decimal {
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Decimal::strict_from relies on assert(result.ec == std::errc{}) after std::to_chars; in non-assert builds a conversion failure could lead to constructing a Decimal from incomplete/invalid output. Consider defining/handling the failure mode (or documenting a strict precondition like “finite values only”) so callers don’t get UB/terminations unexpectedly.

Severity: medium

Other Locations
  • src/lang/numeric/include/sourcemeta/core/numeric_decimal.h:80

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

@jviotti jviotti merged commit 94b0c48 into main Apr 1, 2026
13 checks passed
@jviotti jviotti deleted the divisible-by-fixes branch April 1, 2026 14:44
Copy link
Copy Markdown

@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: f2842b4 Previous: 57e8c91 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 4.431580000000679 ns/iter 4.5098437500001864 ns/iter 0.98
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 5.04164400000036 ns/iter 5.065001999998913 ns/iter 1.00
Regex_Period_Asterisk 4.399486249999995 ns/iter 4.411922341780859 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 5.030839000000924 ns/iter 5.062072000000626 ns/iter 0.99
Regex_Period_Plus 4.139101203508848 ns/iter 4.088221873175847 ns/iter 1.01
Regex_Period 4.090905587661806 ns/iter 4.100222641249968 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 4.727812376784789 ns/iter 4.750442421319062 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 4.721706193763956 ns/iter 4.736398671286325 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 5.140332813647036 ns/iter 5.058524999999463 ns/iter 1.02
Regex_Caret_Group_Period_Asterisk_Group_Dollar 5.034966071428519 ns/iter 5.058555999999044 ns/iter 1.00
Regex_Caret_X_Hyphen 7.85423995535796 ns/iter 8.101438616071123 ns/iter 0.97
Regex_Period_Md_Dollar 35.39651759636099 ns/iter 35.447045298346595 ns/iter 1.00
Regex_Caret_Slash_Period_Asterisk 7.893250000000153 ns/iter 7.895902901786655 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 5.035872999999356 ns/iter 5.034641964284349 ns/iter 1.00
Regex_Nested_Backtrack 102.94451562501195 ns/iter 99.72385937498274 ns/iter 1.03
JSON_Array_Of_Objects_Unique 472.410708127276 ns/iter 497.24109999988286 ns/iter 0.95
JSON_Parse_1 7935.573660713402 ns/iter 8115.591517857521 ns/iter 0.98
JSON_Parse_Real 16458.323660713297 ns/iter 16360.912451283712 ns/iter 1.01
JSON_Parse_Decimal 15994.767857142126 ns/iter 16324.0798487463 ns/iter 0.98
JSON_Parse_Schema_ISO_Language 6030381.24999955 ns/iter 6137338.3928570645 ns/iter 0.98
JSON_Fast_Hash_Helm_Chart_Lock 60.132937499994505 ns/iter 68.29474999999466 ns/iter 0.88
JSON_Equality_Helm_Chart_Lock 283.42654091838926 ns/iter 278.06495187210254 ns/iter 1.02
JSON_Divisible_By_Decimal 263.2999202366629 ns/iter 1193.4576562499187 ns/iter 0.22
JSON_String_Equal/10 13.523556636056425 ns/iter 13.372648214288217 ns/iter 1.01
JSON_String_Equal/100 13.824206857927475 ns/iter 13.740048214287981 ns/iter 1.01
JSON_String_Equal_Small_By_Perfect_Hash/10 1.8820765195372726 ns/iter 1.899292743415571 ns/iter 0.99
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 12.652267857142924 ns/iter 12.632958928573348 ns/iter 1.00
JSON_String_Fast_Hash/10 3.1330642857138207 ns/iter 3.7903124932317587 ns/iter 0.83
JSON_String_Fast_Hash/100 3.1380026785713864 ns/iter 3.7853560646680515 ns/iter 0.83
JSON_String_Key_Hash/10 3.7877807075221734 ns/iter 3.7919169575145153 ns/iter 1.00
JSON_String_Key_Hash/100 16.571394308672442 ns/iter 16.708280468473404 ns/iter 0.99
JSON_Object_Defines_Miss_Same_Length 3.786731243238973 ns/iter 3.812824218749305 ns/iter 0.99
JSON_Object_Defines_Miss_Too_Small 3.772463028978341 ns/iter 3.801686778926493 ns/iter 0.99
JSON_Object_Defines_Miss_Too_Large 3.775610350400959 ns/iter 3.85572879464264 ns/iter 0.98
Pointer_Object_Traverse 41.128367515109304 ns/iter 41.94468042905663 ns/iter 0.98
Pointer_Object_Try_Traverse 52.697214285716754 ns/iter 52.740839285710145 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 185.7486396706698 ns/iter 177.86902976802259 ns/iter 1.04
Pointer_Walker_Schema_ISO_Language 12096378.57142606 ns/iter 12262867.857141862 ns/iter 0.99
Pointer_Maybe_Tracked_Deeply_Nested/0 2303784.090909141 ns/iter 2183949.285714399 ns/iter 1.05
Pointer_Maybe_Tracked_Deeply_Nested/1 3398604.102563368 ns/iter 3255502.4509796496 ns/iter 1.04
Pointer_Position_Tracker_Get_Deeply_Nested 648.658371134741 ns/iter 600.9396205356613 ns/iter 1.08
Schema_Frame_WoT_References 10332203.999999668 ns/iter 10193018.749998117 ns/iter 1.01
Schema_Frame_OMC_References 42842976.47058445 ns/iter 44816166.666669235 ns/iter 0.96
Schema_Frame_OMC_Locations 40112635.294115216 ns/iter 40708200.00000215 ns/iter 0.99
Schema_Frame_ISO_Language_Locations 190927999.99998534 ns/iter 197604433.33332965 ns/iter 0.97
Schema_Frame_KrakenD_References 88630966.66666731 ns/iter 90335671.42854996 ns/iter 0.98
Schema_Frame_KrakenD_Reachable 496571300.0001415 ns/iter 527833499.9998151 ns/iter 0.94
Schema_Iterator_ISO_Language 4958826.174495869 ns/iter 5079731.00000072 ns/iter 0.98
Schema_Frame_ISO_Language_Locations_To_JSON 237099999.99997914 ns/iter 251281900.00001875 ns/iter 0.94
Schema_Tracker_ISO_Language 16282951.111108761 ns/iter 16531304.87804957 ns/iter 0.98
Schema_Tracker_ISO_Language_To_JSON 47459649.9999994 ns/iter 50563370.00000895 ns/iter 0.94
Schema_Format_ISO_Language_To_JSON 196612666.66662416 ns/iter 205916599.9999853 ns/iter 0.95
Schema_Bundle_Meta_2020_12 2913727.542383863 ns/iter 3163184.97652901 ns/iter 0.92
Schema_Frame_Many_Resources_References 1502950000.0000553 ns/iter 1530318800.000032 ns/iter 0.98
Alterschema_Check_Readibility_ISO_Language_Set_3 322590199.99992234 ns/iter 332551449.99998266 ns/iter 0.97
Alterschema_Check_Readibility_OMC 59788481.81817656 ns/iter 62592963.63635837 ns/iter 0.96
Alterschema_Apply_Readibility_KrakenD 1006485099.9999635 ns/iter 1027009700.0000077 ns/iter 0.98
Alterschema_Check_Invalid_External_Refs 145226600.0000236 ns/iter 146000200.00000313 ns/iter 0.99
EditorSchema_ForEditor_EmbeddedResources 28477000.000011686 ns/iter 28064041.666681305 ns/iter 1.01
URITemplateRouter_Create 22339.621874998273 ns/iter 22999.005591456116 ns/iter 0.97
URITemplateRouter_Match 207.26418494355386 ns/iter 205.59742832154268 ns/iter 1.01
URITemplateRouterView_Restore 31328.165178570496 ns/iter 31598.47321428393 ns/iter 0.99
URITemplateRouterView_Match 176.50748503395562 ns/iter 170.81832393874865 ns/iter 1.03
URITemplateRouterView_Arguments 443.5374465349146 ns/iter 444.23838770389835 ns/iter 1.00
HTML_Build_Table_100000 87503414.28572027 ns/iter 88137642.85715868 ns/iter 0.99
HTML_Render_Table_100000 7856268.888887522 ns/iter 7882246.666665398 ns/iter 1.00

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

Copy link
Copy Markdown

@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: f2842b4 Previous: 57e8c91 Ratio
HTML_Build_Table_100000 64172223.181830384 ns/iter 63361133.27273035 ns/iter 1.01
HTML_Render_Table_100000 5462011.669230659 ns/iter 5363982.806452515 ns/iter 1.02
URITemplateRouter_Create 14868.389287825577 ns/iter 14732.405541404825 ns/iter 1.01
URITemplateRouter_Match 160.04176060196826 ns/iter 157.78185301963097 ns/iter 1.01
URITemplateRouterView_Restore 6224.512802217995 ns/iter 6286.852243525588 ns/iter 0.99
URITemplateRouterView_Match 125.85552262005773 ns/iter 126.04018210135679 ns/iter 1.00
URITemplateRouterView_Arguments 465.9411733081663 ns/iter 472.05875065144545 ns/iter 0.99
EditorSchema_ForEditor_EmbeddedResources 14257306.899999093 ns/iter 14147804.183675343 ns/iter 1.01
Alterschema_Check_Readibility_ISO_Language_Set_3 211198176.9999905 ns/iter 204714598.00000957 ns/iter 1.03
Alterschema_Check_Readibility_OMC 34341228.90476352 ns/iter 34009376.85714347 ns/iter 1.01
Alterschema_Apply_Readibility_KrakenD 591468086.9998392 ns/iter 563436421.9997679 ns/iter 1.05
Alterschema_Check_Invalid_External_Refs 120421827.33334054 ns/iter 124889783.8333202 ns/iter 0.96
Schema_Frame_WoT_References 5431463.24030944 ns/iter 5441698.604651416 ns/iter 1.00
Schema_Frame_OMC_References 22094635.15625032 ns/iter 23230664.064517587 ns/iter 0.95
Schema_Frame_OMC_Locations 20509644.742859174 ns/iter 20957615.666668173 ns/iter 0.98
Schema_Frame_ISO_Language_Locations 100984907.57143606 ns/iter 98737464.999983 ns/iter 1.02
Schema_Frame_KrakenD_References 40576902.72222519 ns/iter 39070750.22223378 ns/iter 1.04
Schema_Frame_KrakenD_Reachable 543591538.0001006 ns/iter 525213777.00009 ns/iter 1.03
Schema_Iterator_ISO_Language 2540987.076087362 ns/iter 2571591.7619046583 ns/iter 0.99
Schema_Frame_ISO_Language_Locations_To_JSON 229520596.00000516 ns/iter 223317141.3333821 ns/iter 1.03
Schema_Tracker_ISO_Language 5144618.558823728 ns/iter 5059366.093525745 ns/iter 1.02
Schema_Tracker_ISO_Language_To_JSON 22883535.709678978 ns/iter 22445166.774193034 ns/iter 1.02
Schema_Format_ISO_Language_To_JSON 108168085.28576465 ns/iter 102872479.1427911 ns/iter 1.05
Schema_Bundle_Meta_2020_12 1829442.7836399886 ns/iter 1823084.4000087231 ns/iter 1.00
Schema_Frame_Many_Resources_References 387461754.5000092 ns/iter 376421095.50006354 ns/iter 1.03
Pointer_Object_Traverse 28.20302745887303 ns/iter 26.00809720567348 ns/iter 1.08
Pointer_Object_Try_Traverse 30.948986546976588 ns/iter 24.42003249199963 ns/iter 1.27
Pointer_Push_Back_Pointer_To_Weak_Pointer 148.38343462603288 ns/iter 161.1034853778249 ns/iter 0.92
Pointer_Walker_Schema_ISO_Language 3354052.841345378 ns/iter 3348321.71291851 ns/iter 1.00
Pointer_Maybe_Tracked_Deeply_Nested/0 1615945.6697677828 ns/iter 1552903.0488884624 ns/iter 1.04
Pointer_Maybe_Tracked_Deeply_Nested/1 1876224.7058819723 ns/iter 1769534.87088604 ns/iter 1.06
Pointer_Position_Tracker_Get_Deeply_Nested 425.5536165541766 ns/iter 427.41776030765215 ns/iter 1.00
JSON_Array_Of_Objects_Unique 420.03755086387605 ns/iter 431.8701198982538 ns/iter 0.97
JSON_Parse_1 8035.31520111474 ns/iter 8178.299140214444 ns/iter 0.98
JSON_Parse_Real 11880.250444107623 ns/iter 12317.204085985952 ns/iter 0.96
JSON_Parse_Decimal 17997.83607186772 ns/iter 18312.187241393513 ns/iter 0.98
JSON_Parse_Schema_ISO_Language 4735305.283783898 ns/iter 4762283.918367125 ns/iter 0.99
JSON_Fast_Hash_Helm_Chart_Lock 64.71049311754766 ns/iter 72.32741430113416 ns/iter 0.89
JSON_Equality_Helm_Chart_Lock 157.5403324000126 ns/iter 169.81108298633856 ns/iter 0.93
JSON_Divisible_By_Decimal 239.87972840739204 ns/iter 589.216246356003 ns/iter 0.41
JSON_String_Equal/10 6.005819209254169 ns/iter 6.703844970411237 ns/iter 0.90
JSON_String_Equal/100 6.622961510063175 ns/iter 7.442928141013114 ns/iter 0.89
JSON_String_Equal_Small_By_Perfect_Hash/10 0.7458611573605238 ns/iter 0.6242136520926703 ns/iter 1.19
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 19.605418827592217 ns/iter 28.05374726096632 ns/iter 0.70
JSON_String_Fast_Hash/10 0.9358823194457526 ns/iter 0.9369831843231278 ns/iter 1.00
JSON_String_Fast_Hash/100 0.9352685322215384 ns/iter 0.9353824550079282 ns/iter 1.00
JSON_String_Key_Hash/10 1.5583970201950168 ns/iter 1.5601666446167186 ns/iter 1.00
JSON_String_Key_Hash/100 12.440976464141945 ns/iter 12.450932706940296 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.4277966658177896 ns/iter 3.427562522238556 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 3.4252404365415523 ns/iter 3.427869971495065 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.426958968566706 ns/iter 3.4399435745264224 ns/iter 1.00
Regex_Lower_S_Or_Upper_S_Asterisk 1.2459828304035865 ns/iter 1.246946753371341 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.5561879937575642 ns/iter 1.55913010884121 ns/iter 1.00
Regex_Period_Asterisk 1.558061336655105 ns/iter 1.5582959989265928 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 1.5583725498626952 ns/iter 1.5588641090433961 ns/iter 1.00
Regex_Period_Plus 1.5586742210595843 ns/iter 1.5578770622526732 ns/iter 1.00
Regex_Period 1.5567594673740546 ns/iter 1.5579924396487927 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 1.5575285946614075 ns/iter 1.5584668066257796 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 1.5569445063905818 ns/iter 1.5586590593014795 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 1.5565246453974906 ns/iter 1.557506086263222 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.245817528073431 ns/iter 1.246861846282914 ns/iter 1.00
Regex_Caret_X_Hyphen 12.140752020588229 ns/iter 12.14490166074232 ns/iter 1.00
Regex_Period_Md_Dollar 30.746684957732796 ns/iter 31.76600867189419 ns/iter 0.97
Regex_Caret_Slash_Period_Asterisk 4.66763139761156 ns/iter 4.6768397985613674 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 1.5566621244515702 ns/iter 1.5599993902381513 ns/iter 1.00
Regex_Nested_Backtrack 52.59571192756203 ns/iter 53.952192649612115 ns/iter 0.97

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