Skip to content

Commit

Permalink
Offer GoogleTest and GoogleBenchmark to downstream components (#1490)
Browse files Browse the repository at this point in the history
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
  • Loading branch information
jviotti authored Jan 28, 2025
1 parent a03319d commit d3d01a3
Showing 1 changed file with 14 additions and 5 deletions.
19 changes: 14 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ option(SOURCEMETA_CORE_DOCS "Build the Sourcemeta Core docs" OFF)
option(SOURCEMETA_CORE_INSTALL "Install the Sourcemeta Core library" ON)
option(SOURCEMETA_CORE_ADDRESS_SANITIZER "Build Sourcemeta Core with an address sanitizer" OFF)
option(SOURCEMETA_CORE_UNDEFINED_SANITIZER "Build Sourcemeta Core with an undefined behavior sanitizer" OFF)
option(SOURCEMETA_CORE_CONTRIB_GOOGLETEST "Build the GoogleTest library for downstream consumers" OFF)
option(SOURCEMETA_CORE_CONTRIB_GOOGLEBENCHMARK "Build the GoogleBenchmark library for downstream consumers" OFF)

include(Sourcemeta)

Expand Down Expand Up @@ -94,9 +96,17 @@ if(PROJECT_IS_TOP_LEVEL)
endif()

# Testing

if(SOURCEMETA_CORE_CONTRIB_GOOGLETEST OR SOURCEMETA_CORE_TESTS)
find_package(GoogleTest REQUIRED)
endif()

if(SOURCEMETA_CORE_CONTRIB_GOOGLEBENCHMARK OR SOURCEMETA_CORE_BENCHMARK)
find_package(GoogleBenchmark REQUIRED)
endif()

if(SOURCEMETA_CORE_TESTS)
enable_testing()
find_package(GoogleTest REQUIRED)

if(SOURCEMETA_CORE_REGEX)
add_subdirectory(test/regex)
Expand Down Expand Up @@ -137,9 +147,8 @@ if(SOURCEMETA_CORE_TESTS)
add_subdirectory(test/packaging)
endif()
endif()
endif()

if(SOURCEMETA_CORE_BENCHMARK)
find_package(GoogleBenchmark REQUIRED)
add_subdirectory(benchmark)
endif()
if(SOURCEMETA_CORE_BENCHMARK)
add_subdirectory(benchmark)
endif()

5 comments on commit d3d01a3

@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: d3d01a3 Previous: a03319d Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.2180741573227976 ns/iter 2.2108394908084903 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.210851195172387 ns/iter 2.1789006681584557 ns/iter 1.01
Regex_Period_Asterisk 2.2716536192495846 ns/iter 2.18305096988056 ns/iter 1.04
Regex_Group_Period_Asterisk_Group 2.210955219234521 ns/iter 2.183817681368354 ns/iter 1.01
Regex_Period_Plus 2.8047487967211695 ns/iter 2.7980311589210323 ns/iter 1.00
Regex_Period 2.79684553814773 ns/iter 2.797951550349651 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 2.799187545496145 ns/iter 2.7983778075718555 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 2.4887527730673806 ns/iter 2.7464085773125118 ns/iter 0.91
Regex_Caret_Period_Asterisk_Dollar 2.1904413094521424 ns/iter 2.4876862716767665 ns/iter 0.88
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.1968694682462178 ns/iter 2.487592631939716 ns/iter 0.88
Regex_Caret_X_Hyphen 13.080009850884304 ns/iter 12.51987950895026 ns/iter 1.04
Regex_Period_Md_Dollar 81.6800276104883 ns/iter 81.65822190431628 ns/iter 1.00
Regex_Caret_Slash_Period_Asterisk 5.5998997187844894 ns/iter 6.849936078421474 ns/iter 0.82
Regex_Caret_Period_Range_Dollar 2.8040056817744365 ns/iter 4.040417177017533 ns/iter 0.69
Regex_Nested_Backtrack 497.4186981080674 ns/iter 504.6840500320302 ns/iter 0.99
JSON_Array_Of_Objects_Unique 409.63988646591656 ns/iter 409.46931055514324 ns/iter 1.00
JSON_Parse_1 30473.0440268956 ns/iter 30537.45712921843 ns/iter 1.00
JSON_Fast_Hash_Helm_Chart_Lock 62.692279755701286 ns/iter 58.444520250816815 ns/iter 1.07
JSON_Equality_Helm_Chart_Lock 145.67824887087377 ns/iter 163.87001253153116 ns/iter 0.89
JSON_String_Equal/10 6.231166869999156 ns/iter 7.4611600534743445 ns/iter 0.84
JSON_String_Equal/100 6.852962570347623 ns/iter 8.103839591567633 ns/iter 0.85
JSON_String_Equal_Small_By_Perfect_Hash/10 0.9408855993507736 ns/iter 0.9344158907995163 ns/iter 1.01
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 10.49886840760271 ns/iter 10.258242309093424 ns/iter 1.02
JSON_String_Fast_Hash/10 2.485738618363397 ns/iter 2.4939351666730474 ns/iter 1.00
JSON_String_Fast_Hash/100 2.488811761854451 ns/iter 2.489765936439025 ns/iter 1.00
JSON_String_Key_Hash/10 2.1774747316686343 ns/iter 2.179704631548387 ns/iter 1.00
JSON_String_Key_Hash/100 1.8768918543889073 ns/iter 1.8701579790437612 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.733348649350383 ns/iter 3.7378677863340912 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 3.734284755380469 ns/iter 3.7375162997286777 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.7383454185996015 ns/iter 3.7358238760745 ns/iter 1.00
Pointer_Object_Traverse 44.65204057349581 ns/iter 44.57159539812479 ns/iter 1.00
Pointer_Object_Try_Traverse 52.28969166060967 ns/iter 52.358282169834965 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 308.4008616817075 ns/iter 345.8686613257165 ns/iter 0.89

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: d3d01a3 Previous: 9e6e39e Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.185634203404267 ns/iter 1.8356958097220766 ns/iter 1.19
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.2903181069963634 ns/iter 1.720754076806873 ns/iter 1.33
Regex_Period_Asterisk 2.216533933994635 ns/iter 1.7313216152200936 ns/iter 1.28
Regex_Group_Period_Asterisk_Group 2.123902591848922 ns/iter 1.7144538266836902 ns/iter 1.24
Regex_Period_Plus 2.7976849690692625 ns/iter 2.1291522552849456 ns/iter 1.31
Regex_Period 2.9762578395793584 ns/iter 2.389315155027208 ns/iter 1.25
Regex_Caret_Period_Plus_Dollar 2.5047233898527894 ns/iter 2.320284145305228 ns/iter 1.08
Regex_Caret_Group_Period_Plus_Group_Dollar 2.744862588694732 ns/iter 2.110142554103307 ns/iter 1.30
Regex_Caret_Period_Asterisk_Dollar 2.3568387832789783 ns/iter 1.8059496820654906 ns/iter 1.31
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.230587933971458 ns/iter 1.806589227144433 ns/iter 1.23
Regex_Caret_X_Hyphen 11.948530932133801 ns/iter 6.890008691129977 ns/iter 1.73
Regex_Period_Md_Dollar 109.285439442319 ns/iter 71.30559003642254 ns/iter 1.53
Regex_Caret_Slash_Period_Asterisk 7.309123837208321 ns/iter 5.593028114719477 ns/iter 1.31
Regex_Caret_Period_Range_Dollar 3.5420629163340958 ns/iter 2.3864182263305795 ns/iter 1.48
Regex_Nested_Backtrack 966.6464020631074 ns/iter 890.8321801509067 ns/iter 1.09
JSON_Array_Of_Objects_Unique 478.01560072427066 ns/iter 364.43106721873374 ns/iter 1.31
JSON_Parse_1 31118.678376591808 ns/iter 24008.630768176474 ns/iter 1.30
JSON_Fast_Hash_Helm_Chart_Lock 69.39434152837815 ns/iter 53.79380733929483 ns/iter 1.29
JSON_Equality_Helm_Chart_Lock 171.03119334116965 ns/iter 137.8049022954863 ns/iter 1.24
JSON_String_Equal/10 12.13086248862958 ns/iter 8.505800115128485 ns/iter 1.43
JSON_String_Equal/100 8.683630841927902 ns/iter 6.572420441197624 ns/iter 1.32
JSON_String_Equal_Small_By_Perfect_Hash/10 0.40212162045433614 ns/iter 0.3269539093276405 ns/iter 1.23
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 4.0742663586612355 ns/iter 3.125308490080984 ns/iter 1.30
JSON_String_Fast_Hash/10 2.235086304049477 ns/iter 1.684452494539311 ns/iter 1.33
JSON_String_Fast_Hash/100 2.4670262739448243 ns/iter 2.0926983956892546 ns/iter 1.18
JSON_String_Key_Hash/10 2.0428101379806254 ns/iter 1.359257571506329 ns/iter 1.50
JSON_String_Key_Hash/100 2.107834146180102 ns/iter 1.3746886846636883 ns/iter 1.53
JSON_Object_Defines_Miss_Same_Length 3.267372904595552 ns/iter 2.4341146237088087 ns/iter 1.34
JSON_Object_Defines_Miss_Too_Small 3.033055331276132 ns/iter 2.359150074133652 ns/iter 1.29
JSON_Object_Defines_Miss_Too_Large 2.803369450237396 ns/iter 2.280867457858658 ns/iter 1.23
Pointer_Object_Traverse 23.847343340188868 ns/iter 16.389165433159523 ns/iter 1.46
Pointer_Object_Try_Traverse 32.58693279612863 ns/iter 22.804073321597247 ns/iter 1.43
Pointer_Push_Back_Pointer_To_Weak_Pointer 240.47302511965646 ns/iter 180.67889105967228 ns/iter 1.33

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: d3d01a3 Previous: a03319d Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 6.97596425457231 ns/iter 6.865965401784889 ns/iter 1.02
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 6.884077008928457 ns/iter 7.252735491071353 ns/iter 0.95
Regex_Period_Asterisk 6.86466183035631 ns/iter 6.94632924107097 ns/iter 0.99
Regex_Group_Period_Asterisk_Group 6.912922991071063 ns/iter 6.924772321428614 ns/iter 1.00
Regex_Period_Plus 7.49477678571507 ns/iter 7.21863504464285 ns/iter 1.04
Regex_Period 7.659217633928199 ns/iter 7.246089285715129 ns/iter 1.06
Regex_Caret_Period_Plus_Dollar 7.224770057031371 ns/iter 7.210183896381421 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 7.194329241072392 ns/iter 7.230632812498884 ns/iter 0.99
Regex_Caret_Period_Asterisk_Dollar 7.1595625000000505 ns/iter 7.052488839285331 ns/iter 1.02
Regex_Caret_Group_Period_Asterisk_Group_Dollar 7.0707979910724 ns/iter 7.168039062498568 ns/iter 0.99
Regex_Caret_X_Hyphen 14.274624713058806 ns/iter 11.848919642858391 ns/iter 1.20
Regex_Period_Md_Dollar 150.52145756598765 ns/iter 148.73767857146447 ns/iter 1.01
Regex_Caret_Slash_Period_Asterisk 10.680845312501575 ns/iter 10.363962500000362 ns/iter 1.03
Regex_Caret_Period_Range_Dollar 7.453297991070988 ns/iter 7.661562500000941 ns/iter 0.97
Regex_Nested_Backtrack 630.1918749999556 ns/iter 617.6604464286584 ns/iter 1.02
JSON_Array_Of_Objects_Unique 450.35389053017593 ns/iter 451.6074445553107 ns/iter 1.00
JSON_Parse_1 81223.87276785809 ns/iter 80218.88308558159 ns/iter 1.01
JSON_Fast_Hash_Helm_Chart_Lock 65.98075892857277 ns/iter 68.19685267857827 ns/iter 0.97
JSON_Equality_Helm_Chart_Lock 202.07458054237097 ns/iter 201.09095545455196 ns/iter 1.00
JSON_String_Equal/10 9.593212457173099 ns/iter 9.611128082091888 ns/iter 1.00
JSON_String_Equal/100 9.94155933061748 ns/iter 10.046943705145722 ns/iter 0.99
JSON_String_Equal_Small_By_Perfect_Hash/10 2.1658390624999413 ns/iter 2.190041250000263 ns/iter 0.99
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 14.910488772720981 ns/iter 14.754778695838608 ns/iter 1.01
JSON_String_Fast_Hash/10 3.7213848147829514 ns/iter 3.7488197544645523 ns/iter 0.99
JSON_String_Fast_Hash/100 3.750280171874097 ns/iter 3.7313244576233164 ns/iter 1.01
JSON_String_Key_Hash/10 7.480159788034421 ns/iter 7.6545089285724135 ns/iter 0.98
JSON_String_Key_Hash/100 4.035841882206603 ns/iter 4.035029962562829 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.725347493347592 ns/iter 3.7245989450732195 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 3.7208780290695107 ns/iter 3.76222392185337 ns/iter 0.99
JSON_Object_Defines_Miss_Too_Large 4.978992000000062 ns/iter 5.026629999999841 ns/iter 0.99
Pointer_Object_Traverse 52.44127678571837 ns/iter 53.03770535714339 ns/iter 0.99
Pointer_Object_Try_Traverse 68.0954821428616 ns/iter 68.20866964285902 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 160.68093750001924 ns/iter 188.10390072355744 ns/iter 0.85

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: d3d01a3 Previous: a03319d Ratio
Pointer_Object_Traverse 52.11817784316247 ns/iter 49.16450821820135 ns/iter 1.06
Pointer_Object_Try_Traverse 26.56088675348966 ns/iter 26.467257704072704 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 145.14555675428335 ns/iter 143.95171935104347 ns/iter 1.01
JSON_Array_Of_Objects_Unique 426.68112376738446 ns/iter 426.9227006705325 ns/iter 1.00
JSON_Parse_1 34603.798069822165 ns/iter 33684.34300028726 ns/iter 1.03
JSON_Fast_Hash_Helm_Chart_Lock 62.926341087715166 ns/iter 68.88124173795326 ns/iter 0.91
JSON_Equality_Helm_Chart_Lock 140.38854911245292 ns/iter 144.65165624605538 ns/iter 0.97
JSON_String_Equal/10 5.99520413960805 ns/iter 6.082893609077382 ns/iter 0.99
JSON_String_Equal/100 6.611343864254533 ns/iter 6.610477878484417 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 0.6233365722188613 ns/iter 0.6240997270649936 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 14.293436104830642 ns/iter 14.29082411472038 ns/iter 1.00
JSON_String_Fast_Hash/10 0.9348154393154199 ns/iter 0.9328125879885107 ns/iter 1.00
JSON_String_Fast_Hash/100 0.9335256445409013 ns/iter 0.9350728133761819 ns/iter 1.00
JSON_String_Key_Hash/10 1.714792830618006 ns/iter 1.7122818900184684 ns/iter 1.00
JSON_String_Key_Hash/100 2.02313821480254 ns/iter 2.024177174334585 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.1161766150983015 ns/iter 3.1118761056741864 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 2.799377273806111 ns/iter 2.801317883761255 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 2.4898035211071634 ns/iter 2.4903101638054554 ns/iter 1.00
Regex_Lower_S_Or_Upper_S_Asterisk 2.8017192483304556 ns/iter 2.799534577655293 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.798986232842282 ns/iter 2.797976234288363 ns/iter 1.00
Regex_Period_Asterisk 2.830208724171673 ns/iter 2.798875099407723 ns/iter 1.01
Regex_Group_Period_Asterisk_Group 2.79919724076545 ns/iter 2.8009036642936453 ns/iter 1.00
Regex_Period_Plus 3.423105183878502 ns/iter 3.4218760700219706 ns/iter 1.00
Regex_Period 3.4218987520991075 ns/iter 3.4234128323269086 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 3.4227657707644927 ns/iter 3.42180286045312 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 3.4276700528407313 ns/iter 3.4213978110002605 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 4.04222228622367 ns/iter 4.0398292040416965 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 4.092661316583859 ns/iter 4.041135160550024 ns/iter 1.01
Regex_Caret_X_Hyphen 12.43395239874667 ns/iter 12.433151112448211 ns/iter 1.00
Regex_Period_Md_Dollar 93.90991435471591 ns/iter 93.95893547763863 ns/iter 1.00
Regex_Caret_Slash_Period_Asterisk 7.4652299505485304 ns/iter 6.528721334991597 ns/iter 1.14
Regex_Caret_Period_Range_Dollar 4.355744792497191 ns/iter 4.351555813619017 ns/iter 1.00
Regex_Nested_Backtrack 827.827164141788 ns/iter 826.2021786553929 ns/iter 1.00

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: d3d01a3 Previous: a03319d Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.0986948180553955 ns/iter 2.7983595926291285 ns/iter 0.75
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.084751477601565 ns/iter 2.9289608364277693 ns/iter 0.71
Regex_Period_Asterisk 2.2832563430156756 ns/iter 2.690688733582172 ns/iter 0.85
Regex_Group_Period_Asterisk_Group 2.0691927421676954 ns/iter 2.791487374009105 ns/iter 0.74
Regex_Period_Plus 1.873374086197109 ns/iter 2.2375182619239715 ns/iter 0.84
Regex_Period 1.7672551440358728 ns/iter 2.3642151014833765 ns/iter 0.75
Regex_Caret_Period_Plus_Dollar 1.8268766891101047 ns/iter 2.392316963627823 ns/iter 0.76
Regex_Caret_Group_Period_Plus_Group_Dollar 1.7238640436969392 ns/iter 2.1996964337171274 ns/iter 0.78
Regex_Caret_Period_Asterisk_Dollar 2.0472358197090235 ns/iter 2.5025595281084976 ns/iter 0.82
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.193949669497607 ns/iter 2.6596624662557646 ns/iter 0.82
Regex_Caret_X_Hyphen 6.654799337892965 ns/iter 7.451776614304587 ns/iter 0.89
Regex_Period_Md_Dollar 76.68924549844067 ns/iter 87.47202414111246 ns/iter 0.88
Regex_Caret_Slash_Period_Asterisk 5.377297243446069 ns/iter 5.391657804852589 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 2.136081439467284 ns/iter 2.52889273058107 ns/iter 0.84
Regex_Nested_Backtrack 934.686265980826 ns/iter 1158.9030498235893 ns/iter 0.81
JSON_Array_Of_Objects_Unique 234.11504905780959 ns/iter 292.91318326669125 ns/iter 0.80
JSON_Parse_1 27422.88058080113 ns/iter 35017.9387754344 ns/iter 0.78
JSON_Fast_Hash_Helm_Chart_Lock 26.73598551149099 ns/iter 31.802487782654318 ns/iter 0.84
JSON_Equality_Helm_Chart_Lock 124.22457047807805 ns/iter 157.9048818962297 ns/iter 0.79
JSON_String_Equal/10 6.056313481597349 ns/iter 7.49350355262558 ns/iter 0.81
JSON_String_Equal/100 5.6337597167799 ns/iter 7.550058573125443 ns/iter 0.75
JSON_String_Equal_Small_By_Perfect_Hash/10 1.0352639694271346 ns/iter 1.4660575753113896 ns/iter 0.71
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.875527017772023 ns/iter 4.683385615438262 ns/iter 0.83
JSON_String_Fast_Hash/10 2.1411571848120783 ns/iter 2.508562861208083 ns/iter 0.85
JSON_String_Fast_Hash/100 2.0957563424161645 ns/iter 2.517574461058276 ns/iter 0.83
JSON_String_Key_Hash/10 1.722301269589331 ns/iter 2.0024037396989516 ns/iter 0.86
JSON_String_Key_Hash/100 2.2218242189614603 ns/iter 2.491118370248562 ns/iter 0.89
JSON_Object_Defines_Miss_Same_Length 2.127007861109165 ns/iter 2.5115639789301105 ns/iter 0.85
JSON_Object_Defines_Miss_Too_Small 2.12171417075449 ns/iter 2.585175118637691 ns/iter 0.82
JSON_Object_Defines_Miss_Too_Large 1.9111775345089799 ns/iter 2.29935530331651 ns/iter 0.83
Pointer_Object_Traverse 63.734286414119715 ns/iter 66.20535408624788 ns/iter 0.96
Pointer_Object_Try_Traverse 40.921627384938795 ns/iter 44.36734626076721 ns/iter 0.92
Pointer_Push_Back_Pointer_To_Weak_Pointer 180.1939153754831 ns/iter 212.9278645860231 ns/iter 0.85

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

Please sign in to comment.