-
-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Stop consuming GoogleTest and GoogleBenchmark from Noa #1488
Conversation
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
There was a problem hiding this comment.
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: 5f2adde | Previous: 73a59dc | Ratio |
---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
2.214488381624113 ns/iter |
2.2297296607139843 ns/iter |
0.99 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
2.213966113479697 ns/iter |
2.2184184842627857 ns/iter |
1.00 |
Regex_Period_Asterisk |
2.2096820543163544 ns/iter |
2.209116154986353 ns/iter |
1.00 |
Regex_Group_Period_Asterisk_Group |
2.2050907375485185 ns/iter |
2.2057870643049498 ns/iter |
1.00 |
Regex_Period_Plus |
2.79878986220322 ns/iter |
2.798646531146345 ns/iter |
1.00 |
Regex_Period |
2.799692596445659 ns/iter |
2.7973622890630008 ns/iter |
1.00 |
Regex_Caret_Period_Plus_Dollar |
2.800117911513762 ns/iter |
2.797103273261428 ns/iter |
1.00 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
2.798208246568384 ns/iter |
2.7972607578210456 ns/iter |
1.00 |
Regex_Caret_Period_Asterisk_Dollar |
2.453016811402719 ns/iter |
2.8013222900643586 ns/iter |
0.88 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
2.21272460829115 ns/iter |
3.4179864453705693 ns/iter |
0.65 |
Regex_Caret_X_Hyphen |
13.072477295990625 ns/iter |
12.567774718154537 ns/iter |
1.04 |
Regex_Period_Md_Dollar |
81.68035920295333 ns/iter |
81.22990066993871 ns/iter |
1.01 |
Regex_Caret_Slash_Period_Asterisk |
6.84523697397707 ns/iter |
6.836181427241357 ns/iter |
1.00 |
Regex_Caret_Period_Range_Dollar |
4.040285945885343 ns/iter |
4.045049220448583 ns/iter |
1.00 |
Regex_Nested_Backtrack |
523.076443081492 ns/iter |
502.02896299998656 ns/iter |
1.04 |
JSON_Array_Of_Objects_Unique |
411.7671249628439 ns/iter |
410.74159512435307 ns/iter |
1.00 |
JSON_Parse_1 |
30150.815039862202 ns/iter |
30179.499056523717 ns/iter |
1.00 |
JSON_Fast_Hash_Helm_Chart_Lock |
58.48227653649484 ns/iter |
58.495974627242205 ns/iter |
1.00 |
JSON_Equality_Helm_Chart_Lock |
167.2200246194659 ns/iter |
161.8180658527348 ns/iter |
1.03 |
JSON_String_Equal/10 |
7.786166599574001 ns/iter |
7.02916901173979 ns/iter |
1.11 |
JSON_String_Equal/100 |
8.410359456850193 ns/iter |
6.532754879492395 ns/iter |
1.29 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.9348260186745062 ns/iter |
0.9349516159786384 ns/iter |
1.00 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
10.256399317031265 ns/iter |
14.604563285436134 ns/iter |
0.70 |
JSON_String_Fast_Hash/10 |
2.4877535048980564 ns/iter |
2.486907974391555 ns/iter |
1.00 |
JSON_String_Fast_Hash/100 |
2.48924076897665 ns/iter |
2.4895379599073655 ns/iter |
1.00 |
JSON_String_Key_Hash/10 |
2.1804165140378298 ns/iter |
2.69225809795205 ns/iter |
0.81 |
JSON_String_Key_Hash/100 |
1.8671974916742848 ns/iter |
1.904575502386304 ns/iter |
0.98 |
JSON_Object_Defines_Miss_Same_Length |
3.7367063466551884 ns/iter |
3.7347279547126124 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Small |
3.751551254064609 ns/iter |
3.7341593690866364 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Large |
3.7353287475557697 ns/iter |
3.7322046854441844 ns/iter |
1.00 |
Pointer_Object_Traverse |
43.84139060527084 ns/iter |
43.97471622956669 ns/iter |
1.00 |
Pointer_Object_Try_Traverse |
52.307122287014224 ns/iter |
52.290123136798194 ns/iter |
1.00 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
290.2553737238566 ns/iter |
290.38297564997816 ns/iter |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
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: 5f2adde | Previous: 201aa7f | Ratio |
---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
6.955387276785479 ns/iter |
7.091121651784857 ns/iter |
0.98 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
7.119411830356676 ns/iter |
6.911580357142709 ns/iter |
1.03 |
Regex_Period_Asterisk |
7.00957031250076 ns/iter |
7.970574071560875 ns/iter |
0.88 |
Regex_Group_Period_Asterisk_Group |
6.85620758928529 ns/iter |
6.823160714284983 ns/iter |
1.00 |
Regex_Period_Plus |
7.614610491071261 ns/iter |
7.2601752232134436 ns/iter |
1.05 |
Regex_Period |
7.145678571428401 ns/iter |
7.31007924107122 ns/iter |
0.98 |
Regex_Caret_Period_Plus_Dollar |
7.50299107142841 ns/iter |
7.508563616071789 ns/iter |
1.00 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
7.265405133928735 ns/iter |
7.521664252136639 ns/iter |
0.97 |
Regex_Caret_Period_Asterisk_Dollar |
6.862494419643181 ns/iter |
7.002910714284383 ns/iter |
0.98 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
6.908044642856786 ns/iter |
7.318847098213764 ns/iter |
0.94 |
Regex_Caret_X_Hyphen |
11.796057812500036 ns/iter |
11.77541250000047 ns/iter |
1.00 |
Regex_Period_Md_Dollar |
147.88405589803176 ns/iter |
149.26479910718015 ns/iter |
0.99 |
Regex_Caret_Slash_Period_Asterisk |
10.515989062501063 ns/iter |
10.433210714284412 ns/iter |
1.01 |
Regex_Caret_Period_Range_Dollar |
7.467979910714209 ns/iter |
7.758664062499523 ns/iter |
0.96 |
Regex_Nested_Backtrack |
623.2358928571102 ns/iter |
619.3226000000323 ns/iter |
1.01 |
JSON_Array_Of_Objects_Unique |
448.66392892935215 ns/iter |
449.9729419715434 ns/iter |
1.00 |
JSON_Parse_1 |
80175.90401785719 ns/iter |
80649.46428572029 ns/iter |
0.99 |
JSON_Fast_Hash_Helm_Chart_Lock |
69.74998214285425 ns/iter |
64.96771428570825 ns/iter |
1.07 |
JSON_Equality_Helm_Chart_Lock |
198.24743757824237 ns/iter |
195.79995554466467 ns/iter |
1.01 |
JSON_String_Equal/10 |
9.605575403546784 ns/iter |
9.618754687497955 ns/iter |
1.00 |
JSON_String_Equal/100 |
9.944759374999279 ns/iter |
9.929729419958315 ns/iter |
1.00 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
2.171300937499865 ns/iter |
2.1649428125002146 ns/iter |
1.00 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
15.191446428572318 ns/iter |
14.891753504948648 ns/iter |
1.02 |
JSON_String_Fast_Hash/10 |
3.7318028504784584 ns/iter |
3.766949993273385 ns/iter |
0.99 |
JSON_String_Fast_Hash/100 |
3.7163153505068474 ns/iter |
3.8189484889622607 ns/iter |
0.97 |
JSON_String_Key_Hash/10 |
7.670019608614756 ns/iter |
7.4698419309396185 ns/iter |
1.03 |
JSON_String_Key_Hash/100 |
4.026628712547133 ns/iter |
4.023559203614034 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Same_Length |
3.7217351719260034 ns/iter |
3.7155026719371556 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Small |
3.720355171928176 ns/iter |
3.715276064793996 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Large |
4.954435714285157 ns/iter |
4.959134821429449 ns/iter |
1.00 |
Pointer_Object_Traverse |
52.746189999993476 ns/iter |
53.213800000003175 ns/iter |
0.99 |
Pointer_Object_Try_Traverse |
68.06706250000413 ns/iter |
67.96050892857255 ns/iter |
1.00 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
187.40248994664438 ns/iter |
185.2056326076679 ns/iter |
1.01 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
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: 5f2adde | Previous: 73a59dc | Ratio |
---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
1.8274939411869908 ns/iter |
1.5675992467317115 ns/iter |
1.17 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
1.72232837016207 ns/iter |
1.5698111269484059 ns/iter |
1.10 |
Regex_Period_Asterisk |
1.7355717673118676 ns/iter |
1.5832553749118763 ns/iter |
1.10 |
Regex_Group_Period_Asterisk_Group |
1.760103687873177 ns/iter |
1.5712266407304587 ns/iter |
1.12 |
Regex_Period_Plus |
2.1789280719853834 ns/iter |
1.885139068191515 ns/iter |
1.16 |
Regex_Period |
2.281803996385074 ns/iter |
1.8812579490514545 ns/iter |
1.21 |
Regex_Caret_Period_Plus_Dollar |
2.3193550092828485 ns/iter |
1.8819763604072588 ns/iter |
1.23 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
1.980233293415203 ns/iter |
1.8815577679908875 ns/iter |
1.05 |
Regex_Caret_Period_Asterisk_Dollar |
1.6658956355339245 ns/iter |
1.568523431905189 ns/iter |
1.06 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
1.7313871454944607 ns/iter |
1.5676281344801375 ns/iter |
1.10 |
Regex_Caret_X_Hyphen |
7.029807199007511 ns/iter |
6.578391100837746 ns/iter |
1.07 |
Regex_Period_Md_Dollar |
73.89930174240115 ns/iter |
67.11271066687415 ns/iter |
1.10 |
Regex_Caret_Slash_Period_Asterisk |
5.42193929581746 ns/iter |
5.085274297109281 ns/iter |
1.07 |
Regex_Caret_Period_Range_Dollar |
2.399136644862528 ns/iter |
2.1953826745198604 ns/iter |
1.09 |
Regex_Nested_Backtrack |
925.824558686996 ns/iter |
730.2970782273854 ns/iter |
1.27 |
JSON_Array_Of_Objects_Unique |
343.57630766935904 ns/iter |
327.7751269566152 ns/iter |
1.05 |
JSON_Parse_1 |
25834.55612951172 ns/iter |
21335.509205473278 ns/iter |
1.21 |
JSON_Fast_Hash_Helm_Chart_Lock |
56.91699564851691 ns/iter |
47.61171596775828 ns/iter |
1.20 |
JSON_Equality_Helm_Chart_Lock |
132.23155478878226 ns/iter |
118.81188498662641 ns/iter |
1.11 |
JSON_String_Equal/10 |
8.317902012015256 ns/iter |
7.5189644287583635 ns/iter |
1.11 |
JSON_String_Equal/100 |
6.627411002552357 ns/iter |
5.9603186531728864 ns/iter |
1.11 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.38409232235020674 ns/iter |
0.3135637980790458 ns/iter |
1.22 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
3.073153676435611 ns/iter |
2.9001058891703617 ns/iter |
1.06 |
JSON_String_Fast_Hash/10 |
1.6874151488367106 ns/iter |
1.5668793763912479 ns/iter |
1.08 |
JSON_String_Fast_Hash/100 |
2.031841191558748 ns/iter |
1.880122191344516 ns/iter |
1.08 |
JSON_String_Key_Hash/10 |
1.3504892055776365 ns/iter |
1.2630163421263159 ns/iter |
1.07 |
JSON_String_Key_Hash/100 |
1.3198804635942232 ns/iter |
1.2540105149500014 ns/iter |
1.05 |
JSON_Object_Defines_Miss_Same_Length |
2.237025088194392 ns/iter |
2.2013091023929015 ns/iter |
1.02 |
JSON_Object_Defines_Miss_Too_Small |
2.254555273015603 ns/iter |
2.1943459730131893 ns/iter |
1.03 |
JSON_Object_Defines_Miss_Too_Large |
2.2332234779758915 ns/iter |
2.2001960539072742 ns/iter |
1.02 |
Pointer_Object_Traverse |
15.528398488335794 ns/iter |
15.255610632680147 ns/iter |
1.02 |
Pointer_Object_Try_Traverse |
21.936792398162556 ns/iter |
21.74044577890794 ns/iter |
1.01 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
172.9944768693088 ns/iter |
172.40022342766332 ns/iter |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
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: 5f2adde | Previous: 73a59dc | Ratio |
---|---|---|---|
Pointer_Object_Traverse |
52.11133425438859 ns/iter |
50.15660501764135 ns/iter |
1.04 |
Pointer_Object_Try_Traverse |
26.46005168845212 ns/iter |
26.47226641370318 ns/iter |
1.00 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
137.15897452591926 ns/iter |
138.29663210703097 ns/iter |
0.99 |
JSON_Array_Of_Objects_Unique |
408.7024143337126 ns/iter |
417.9872736386254 ns/iter |
0.98 |
JSON_Parse_1 |
34036.058150803765 ns/iter |
33657.251948426085 ns/iter |
1.01 |
JSON_Fast_Hash_Helm_Chart_Lock |
64.18502985676834 ns/iter |
70.53455387965447 ns/iter |
0.91 |
JSON_Equality_Helm_Chart_Lock |
144.7673846472572 ns/iter |
143.16751220987476 ns/iter |
1.01 |
JSON_String_Equal/10 |
5.992846207130622 ns/iter |
5.696453240077336 ns/iter |
1.05 |
JSON_String_Equal/100 |
6.613576890944678 ns/iter |
6.315691588015817 ns/iter |
1.05 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.623373904298739 ns/iter |
0.6233346624556023 ns/iter |
1.00 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
14.293456610803082 ns/iter |
14.287831004357026 ns/iter |
1.00 |
JSON_String_Fast_Hash/10 |
0.9342045422150085 ns/iter |
0.9338010982541507 ns/iter |
1.00 |
JSON_String_Fast_Hash/100 |
0.9333496452624508 ns/iter |
0.9345787623324568 ns/iter |
1.00 |
JSON_String_Key_Hash/10 |
1.7120562234637202 ns/iter |
1.7110595242228368 ns/iter |
1.00 |
JSON_String_Key_Hash/100 |
2.0310389896864116 ns/iter |
2.022283046518291 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Same_Length |
3.108040282624777 ns/iter |
3.1156412031186567 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Small |
2.805511139697639 ns/iter |
2.797479617569553 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Large |
2.503006725540413 ns/iter |
2.4887403609814256 ns/iter |
1.01 |
Regex_Lower_S_Or_Upper_S_Asterisk |
2.797017047954052 ns/iter |
2.797657242623876 ns/iter |
1.00 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
2.7983451317383543 ns/iter |
2.798125487062752 ns/iter |
1.00 |
Regex_Period_Asterisk |
2.7998562870491353 ns/iter |
2.8333556609019026 ns/iter |
0.99 |
Regex_Group_Period_Asterisk_Group |
2.797591095605753 ns/iter |
2.8051377548740217 ns/iter |
1.00 |
Regex_Period_Plus |
3.241013211371905 ns/iter |
3.41822228176545 ns/iter |
0.95 |
Regex_Period |
3.112238626643444 ns/iter |
3.4189296631497568 ns/iter |
0.91 |
Regex_Caret_Period_Plus_Dollar |
3.1441474671763885 ns/iter |
3.4199188263631597 ns/iter |
0.92 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
3.1149032561861696 ns/iter |
3.4033776646050042 ns/iter |
0.92 |
Regex_Caret_Period_Asterisk_Dollar |
3.1333667067093485 ns/iter |
3.1115759451117344 ns/iter |
1.01 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
3.0094700288640723 ns/iter |
3.1184099488396355 ns/iter |
0.97 |
Regex_Caret_X_Hyphen |
12.43204895099733 ns/iter |
12.430925859617613 ns/iter |
1.00 |
Regex_Period_Md_Dollar |
93.40813588142969 ns/iter |
95.51009216861975 ns/iter |
0.98 |
Regex_Caret_Slash_Period_Asterisk |
6.529469730436778 ns/iter |
7.465658555769914 ns/iter |
0.87 |
Regex_Caret_Period_Range_Dollar |
4.34969190898094 ns/iter |
4.352840797206475 ns/iter |
1.00 |
Regex_Nested_Backtrack |
827.5996607964736 ns/iter |
836.6541237603781 ns/iter |
0.99 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
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: 5f2adde | Previous: 73a59dc | Ratio |
---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
2.3948137364322823 ns/iter |
2.877271291135805 ns/iter |
0.83 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
2.4446335485640724 ns/iter |
2.443791313984109 ns/iter |
1.00 |
Regex_Period_Asterisk |
2.2910414999691735 ns/iter |
2.17685285702276 ns/iter |
1.05 |
Regex_Group_Period_Asterisk_Group |
2.429137743435394 ns/iter |
2.028867685342938 ns/iter |
1.20 |
Regex_Period_Plus |
2.1232958125910075 ns/iter |
1.7004568948896053 ns/iter |
1.25 |
Regex_Period |
2.001797181682877 ns/iter |
1.696900225552773 ns/iter |
1.18 |
Regex_Caret_Period_Plus_Dollar |
1.9433012798693343 ns/iter |
1.7028765232729426 ns/iter |
1.14 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
2.1498045685751346 ns/iter |
1.6949070322433324 ns/iter |
1.27 |
Regex_Caret_Period_Asterisk_Dollar |
2.280173098592203 ns/iter |
2.030448889719994 ns/iter |
1.12 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
2.5405511077379916 ns/iter |
2.0494221367795276 ns/iter |
1.24 |
Regex_Caret_X_Hyphen |
7.494101071214144 ns/iter |
6.466665372962175 ns/iter |
1.16 |
Regex_Period_Md_Dollar |
96.97509895744817 ns/iter |
76.49701976290403 ns/iter |
1.27 |
Regex_Caret_Slash_Period_Asterisk |
6.047691144704786 ns/iter |
4.887457213768917 ns/iter |
1.24 |
Regex_Caret_Period_Range_Dollar |
2.480266264145013 ns/iter |
2.0697035003206117 ns/iter |
1.20 |
Regex_Nested_Backtrack |
1006.4729187374193 ns/iter |
885.4627054822018 ns/iter |
1.14 |
JSON_Array_Of_Objects_Unique |
278.8526982116006 ns/iter |
220.2980668665595 ns/iter |
1.27 |
JSON_Parse_1 |
32279.71440434754 ns/iter |
25114.725875489286 ns/iter |
1.29 |
JSON_Fast_Hash_Helm_Chart_Lock |
32.00070956408338 ns/iter |
25.946153203477348 ns/iter |
1.23 |
JSON_Equality_Helm_Chart_Lock |
143.38304118210527 ns/iter |
123.08261876054146 ns/iter |
1.16 |
JSON_String_Equal/10 |
6.859715972682241 ns/iter |
5.758392406365255 ns/iter |
1.19 |
JSON_String_Equal/100 |
7.172976885945931 ns/iter |
5.5054902474720615 ns/iter |
1.30 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
1.1527805197218612 ns/iter |
1.115495570700371 ns/iter |
1.03 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
4.476842861911356 ns/iter |
4.326623096845049 ns/iter |
1.03 |
JSON_String_Fast_Hash/10 |
2.4011740794448966 ns/iter |
2.293374190259104 ns/iter |
1.05 |
JSON_String_Fast_Hash/100 |
2.5220323896937016 ns/iter |
2.235427194652832 ns/iter |
1.13 |
JSON_String_Key_Hash/10 |
1.8721660458355456 ns/iter |
1.6593356364643792 ns/iter |
1.13 |
JSON_String_Key_Hash/100 |
2.456225535224572 ns/iter |
2.1742821422713883 ns/iter |
1.13 |
JSON_Object_Defines_Miss_Same_Length |
2.283172313114887 ns/iter |
1.8620378469872418 ns/iter |
1.23 |
JSON_Object_Defines_Miss_Too_Small |
2.6656993594574487 ns/iter |
2.043190396107593 ns/iter |
1.30 |
JSON_Object_Defines_Miss_Too_Large |
2.4038506792200236 ns/iter |
1.8981064770752778 ns/iter |
1.27 |
Pointer_Object_Traverse |
61.1701768150222 ns/iter |
56.54779591394213 ns/iter |
1.08 |
Pointer_Object_Try_Traverse |
47.09671462018403 ns/iter |
38.88587731038979 ns/iter |
1.21 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
210.30251347975275 ns/iter |
165.20176548950565 ns/iter |
1.27 |
This comment was automatically generated by workflow using github-action-benchmark.
Signed-off-by: Juan Cruz Viotti jv@jviotti.com