-
-
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
Remove anchors()
from the public JSON Schema interface
#1500
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 (macos/llvm)
Benchmark suite | Current: 2db95e0 | Previous: d1039b8 | Ratio |
---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
1.6056321872593577 ns/iter |
2.272603659912782 ns/iter |
0.71 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
1.6057586928243515 ns/iter |
2.292447019131944 ns/iter |
0.70 |
Regex_Period_Asterisk |
1.649354616792042 ns/iter |
2.13597649445663 ns/iter |
0.77 |
Regex_Group_Period_Asterisk_Group |
1.7215554020760833 ns/iter |
2.5155558253371537 ns/iter |
0.68 |
Regex_Period_Plus |
1.9559681693853088 ns/iter |
2.9661443190639707 ns/iter |
0.66 |
Regex_Period |
1.9354492210379564 ns/iter |
2.9591032337633196 ns/iter |
0.65 |
Regex_Caret_Period_Plus_Dollar |
1.9452783600022858 ns/iter |
2.649880218102814 ns/iter |
0.73 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
1.9312939910931572 ns/iter |
2.899119408415247 ns/iter |
0.67 |
Regex_Caret_Period_Asterisk_Dollar |
1.6371957036987421 ns/iter |
2.588812324057509 ns/iter |
0.63 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
1.62168673624625 ns/iter |
2.264736107438064 ns/iter |
0.72 |
Regex_Caret_X_Hyphen |
6.75290486940217 ns/iter |
9.098641882491895 ns/iter |
0.74 |
Regex_Period_Md_Dollar |
70.27456536073541 ns/iter |
100.8998583489317 ns/iter |
0.70 |
Regex_Caret_Slash_Period_Asterisk |
5.173766213615605 ns/iter |
6.378184644628103 ns/iter |
0.81 |
Regex_Caret_Period_Range_Dollar |
2.281034805615574 ns/iter |
3.1395645799794774 ns/iter |
0.73 |
Regex_Nested_Backtrack |
762.1050977688604 ns/iter |
1047.9826508778744 ns/iter |
0.73 |
JSON_Array_Of_Objects_Unique |
333.90948542791745 ns/iter |
440.1934757700168 ns/iter |
0.76 |
JSON_Parse_1 |
21506.142711927547 ns/iter |
30284.62411968264 ns/iter |
0.71 |
JSON_Fast_Hash_Helm_Chart_Lock |
48.93007020473761 ns/iter |
63.99578752276005 ns/iter |
0.76 |
JSON_Equality_Helm_Chart_Lock |
120.25288947959652 ns/iter |
155.923992024792 ns/iter |
0.77 |
JSON_String_Equal/10 |
7.550423007972943 ns/iter |
10.56912447437271 ns/iter |
0.71 |
JSON_String_Equal/100 |
6.097681026714075 ns/iter |
9.364821301284968 ns/iter |
0.65 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.335811131936629 ns/iter |
0.41239453396608233 ns/iter |
0.81 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
3.430931699234517 ns/iter |
3.8704953860071933 ns/iter |
0.89 |
JSON_String_Fast_Hash/10 |
1.698347349026804 ns/iter |
2.057935356450222 ns/iter |
0.83 |
JSON_String_Fast_Hash/100 |
1.9930915975055274 ns/iter |
2.4879413451627133 ns/iter |
0.80 |
JSON_String_Key_Hash/10 |
1.3469545805389034 ns/iter |
1.5778325125852966 ns/iter |
0.85 |
JSON_String_Key_Hash/100 |
1.3887142864051918 ns/iter |
1.6773218966140813 ns/iter |
0.83 |
JSON_Object_Defines_Miss_Same_Length |
2.6847693215515567 ns/iter |
2.7513182587675784 ns/iter |
0.98 |
JSON_Object_Defines_Miss_Too_Small |
2.489868692641143 ns/iter |
2.7463315990630255 ns/iter |
0.91 |
JSON_Object_Defines_Miss_Too_Large |
2.5781399705252954 ns/iter |
2.815601865018342 ns/iter |
0.92 |
Pointer_Object_Traverse |
19.63895434135666 ns/iter |
22.383229344936808 ns/iter |
0.88 |
Pointer_Object_Try_Traverse |
23.515039536507842 ns/iter |
34.39778225139049 ns/iter |
0.68 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
184.82528716370942 ns/iter |
232.2348523741067 ns/iter |
0.80 |
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/llvm)
Benchmark suite | Current: 2db95e0 | Previous: d1039b8 | Ratio |
---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
2.20632173788985 ns/iter |
2.220547577887335 ns/iter |
0.99 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
2.2116321288437444 ns/iter |
2.247716283883405 ns/iter |
0.98 |
Regex_Period_Asterisk |
2.2008923288048687 ns/iter |
2.1938147842379876 ns/iter |
1.00 |
Regex_Group_Period_Asterisk_Group |
2.215269764975009 ns/iter |
2.201862442030673 ns/iter |
1.01 |
Regex_Period_Plus |
2.797233192046097 ns/iter |
2.7996738933152243 ns/iter |
1.00 |
Regex_Period |
2.7967816947249604 ns/iter |
2.4903684541568527 ns/iter |
1.12 |
Regex_Caret_Period_Plus_Dollar |
2.7970560864557408 ns/iter |
2.716484945499371 ns/iter |
1.03 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
2.7976918765992806 ns/iter |
2.488667385071972 ns/iter |
1.12 |
Regex_Caret_Period_Asterisk_Dollar |
3.4173999863703495 ns/iter |
2.2142646830124773 ns/iter |
1.54 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
3.4252130785795534 ns/iter |
2.193481996152133 ns/iter |
1.56 |
Regex_Caret_X_Hyphen |
12.587932982296131 ns/iter |
13.055306126903075 ns/iter |
0.96 |
Regex_Period_Md_Dollar |
83.41261977387076 ns/iter |
81.58166798897486 ns/iter |
1.02 |
Regex_Caret_Slash_Period_Asterisk |
6.841174050654239 ns/iter |
5.603774699785185 ns/iter |
1.22 |
Regex_Caret_Period_Range_Dollar |
2.7996189954114277 ns/iter |
2.8098367183450117 ns/iter |
1.00 |
Regex_Nested_Backtrack |
498.2272395458395 ns/iter |
502.30239899997287 ns/iter |
0.99 |
JSON_Array_Of_Objects_Unique |
406.2390276468503 ns/iter |
405.55829657041426 ns/iter |
1.00 |
JSON_Parse_1 |
30722.327671065053 ns/iter |
30596.74519791165 ns/iter |
1.00 |
JSON_Fast_Hash_Helm_Chart_Lock |
59.384051707373686 ns/iter |
59.094997287242684 ns/iter |
1.00 |
JSON_Equality_Helm_Chart_Lock |
156.72758518448086 ns/iter |
151.4245138405844 ns/iter |
1.04 |
JSON_String_Equal/10 |
7.45973259349155 ns/iter |
6.222737949466636 ns/iter |
1.20 |
JSON_String_Equal/100 |
7.15809393677905 ns/iter |
6.848925336962325 ns/iter |
1.05 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.9351211505207959 ns/iter |
0.9350277429330012 ns/iter |
1.00 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
14.603706668922108 ns/iter |
14.60095197943798 ns/iter |
1.00 |
JSON_String_Fast_Hash/10 |
2.489674957941548 ns/iter |
2.4859153100512303 ns/iter |
1.00 |
JSON_String_Fast_Hash/100 |
2.487870058489279 ns/iter |
2.486031064618272 ns/iter |
1.00 |
JSON_String_Key_Hash/10 |
2.6915115126084648 ns/iter |
2.654999142447869 ns/iter |
1.01 |
JSON_String_Key_Hash/100 |
1.9022939896678468 ns/iter |
1.8666477267403727 ns/iter |
1.02 |
JSON_Object_Defines_Miss_Same_Length |
3.7422247966099076 ns/iter |
3.733899622256243 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Small |
3.7347523290945333 ns/iter |
3.7334115510541594 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Large |
3.7467727787726077 ns/iter |
3.736346402134831 ns/iter |
1.00 |
Pointer_Object_Traverse |
45.8714265063713 ns/iter |
44.29840964830761 ns/iter |
1.04 |
Pointer_Object_Try_Traverse |
52.97750795109741 ns/iter |
52.37492310502513 ns/iter |
1.01 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
308.12083521192477 ns/iter |
306.90642949558656 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: 2db95e0 | Previous: d1039b8 | Ratio |
---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
7.09628794642774 ns/iter |
6.8718649553569024 ns/iter |
1.03 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
7.086450892856026 ns/iter |
6.8636571428574 ns/iter |
1.03 |
Regex_Period_Asterisk |
7.312513360211095 ns/iter |
6.974486607142743 ns/iter |
1.05 |
Regex_Group_Period_Asterisk_Group |
6.9085055803570175 ns/iter |
6.988375000000095 ns/iter |
0.99 |
Regex_Period_Plus |
7.45026827031265 ns/iter |
7.226108258928982 ns/iter |
1.03 |
Regex_Period |
7.456743303571045 ns/iter |
7.387556919643703 ns/iter |
1.01 |
Regex_Caret_Period_Plus_Dollar |
7.485912946427119 ns/iter |
7.135473214286188 ns/iter |
1.05 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
7.152008928569741 ns/iter |
7.253243303571974 ns/iter |
0.99 |
Regex_Caret_Period_Asterisk_Dollar |
7.142665146683086 ns/iter |
6.996428571428887 ns/iter |
1.02 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
6.84332139802153 ns/iter |
6.98299553571502 ns/iter |
0.98 |
Regex_Caret_X_Hyphen |
11.843104687500272 ns/iter |
14.227035204343391 ns/iter |
0.83 |
Regex_Period_Md_Dollar |
150.72134594994182 ns/iter |
150.2891071428536 ns/iter |
1.00 |
Regex_Caret_Slash_Period_Asterisk |
10.561704687500395 ns/iter |
10.38084687499996 ns/iter |
1.02 |
Regex_Caret_Period_Range_Dollar |
7.466485680953636 ns/iter |
7.486743716576887 ns/iter |
1.00 |
Regex_Nested_Backtrack |
609.704821428636 ns/iter |
608.3369642856796 ns/iter |
1.00 |
JSON_Array_Of_Objects_Unique |
491.07200000003104 ns/iter |
491.141263845394 ns/iter |
1.00 |
JSON_Parse_1 |
80041.88616071519 ns/iter |
79810.91517857816 ns/iter |
1.00 |
JSON_Fast_Hash_Helm_Chart_Lock |
62.156732142873196 ns/iter |
66.33134821427689 ns/iter |
0.94 |
JSON_Equality_Helm_Chart_Lock |
186.7157309568051 ns/iter |
188.36602574697568 ns/iter |
0.99 |
JSON_String_Equal/10 |
9.069853124998417 ns/iter |
8.985188616071735 ns/iter |
1.01 |
JSON_String_Equal/100 |
9.913623170027945 ns/iter |
9.92287897355859 ns/iter |
1.00 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
2.1685566940081626 ns/iter |
2.174887500000011 ns/iter |
1.00 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
14.60449680980373 ns/iter |
14.828819196429167 ns/iter |
0.98 |
JSON_String_Fast_Hash/10 |
4.033371301845414 ns/iter |
4.041466123288193 ns/iter |
1.00 |
JSON_String_Fast_Hash/100 |
4.196066875000781 ns/iter |
4.028135319692967 ns/iter |
1.04 |
JSON_String_Key_Hash/10 |
7.759159598216111 ns/iter |
7.935802196715434 ns/iter |
0.98 |
JSON_String_Key_Hash/100 |
4.026252232142622 ns/iter |
4.035108310776726 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Same_Length |
3.716230707649095 ns/iter |
3.7559480290077483 ns/iter |
0.99 |
JSON_Object_Defines_Miss_Too_Small |
4.949894999999742 ns/iter |
4.967442857143567 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Large |
3.4143945921167007 ns/iter |
3.4380607974321817 ns/iter |
0.99 |
Pointer_Object_Traverse |
50.14318999999432 ns/iter |
49.39659000000347 ns/iter |
1.02 |
Pointer_Object_Try_Traverse |
67.69095535714445 ns/iter |
67.81262276785834 ns/iter |
1.00 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
185.8518915939203 ns/iter |
162.48794642856572 ns/iter |
1.14 |
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: 2db95e0 | Previous: d1039b8 | Ratio |
---|---|---|---|
Pointer_Object_Traverse |
46.817190179799844 ns/iter |
45.64983324736455 ns/iter |
1.03 |
Pointer_Object_Try_Traverse |
26.169158413125892 ns/iter |
26.14561696173193 ns/iter |
1.00 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
145.15380663084775 ns/iter |
144.98700164498874 ns/iter |
1.00 |
JSON_Array_Of_Objects_Unique |
429.4185493834686 ns/iter |
414.4424439435892 ns/iter |
1.04 |
JSON_Parse_1 |
33226.86442128908 ns/iter |
33488.16770838592 ns/iter |
0.99 |
JSON_Fast_Hash_Helm_Chart_Lock |
66.23279126552187 ns/iter |
62.86977271866869 ns/iter |
1.05 |
JSON_Equality_Helm_Chart_Lock |
149.3492030341639 ns/iter |
150.91060489094605 ns/iter |
0.99 |
JSON_String_Equal/10 |
6.346264893679356 ns/iter |
6.33749663091924 ns/iter |
1.00 |
JSON_String_Equal/100 |
6.95962403091425 ns/iter |
6.967756830455331 ns/iter |
1.00 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.945423423429935 ns/iter |
0.9336441250683972 ns/iter |
1.01 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
14.289297410984409 ns/iter |
14.288750528005046 ns/iter |
1.00 |
JSON_String_Fast_Hash/10 |
0.9324661455471106 ns/iter |
0.9328878806972629 ns/iter |
1.00 |
JSON_String_Fast_Hash/100 |
0.932676148771644 ns/iter |
0.9322742114096909 ns/iter |
1.00 |
JSON_String_Key_Hash/10 |
1.672892391185746 ns/iter |
1.6761272356245651 ns/iter |
1.00 |
JSON_String_Key_Hash/100 |
1.9821949690344467 ns/iter |
1.9835455350792497 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Same_Length |
2.4861888066530673 ns/iter |
2.661097417192496 ns/iter |
0.93 |
JSON_Object_Defines_Miss_Too_Small |
2.4872285228887483 ns/iter |
2.4959629192068467 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Large |
3.1080563963517185 ns/iter |
3.1085096648253177 ns/iter |
1.00 |
Regex_Lower_S_Or_Upper_S_Asterisk |
3.427747557243217 ns/iter |
3.4198403515840377 ns/iter |
1.00 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
3.4296582161922387 ns/iter |
3.4288885296590075 ns/iter |
1.00 |
Regex_Period_Asterisk |
3.4193066635003104 ns/iter |
3.4215930773693723 ns/iter |
1.00 |
Regex_Group_Period_Asterisk_Group |
3.4222641424507834 ns/iter |
3.4254047160594197 ns/iter |
1.00 |
Regex_Period_Plus |
3.57028854272955 ns/iter |
3.7345131097394084 ns/iter |
0.96 |
Regex_Period |
3.421002681003835 ns/iter |
3.7305413376614265 ns/iter |
0.92 |
Regex_Caret_Period_Plus_Dollar |
3.4210986087066892 ns/iter |
3.7342162475184466 ns/iter |
0.92 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
3.4201195752023588 ns/iter |
4.215419201107587 ns/iter |
0.81 |
Regex_Caret_Period_Asterisk_Dollar |
3.7282696623909577 ns/iter |
4.661344183754675 ns/iter |
0.80 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
3.726773052556231 ns/iter |
4.660717727100717 ns/iter |
0.80 |
Regex_Caret_X_Hyphen |
12.434791987965376 ns/iter |
13.143488127108597 ns/iter |
0.95 |
Regex_Period_Md_Dollar |
91.07198744102747 ns/iter |
93.38737598994702 ns/iter |
0.98 |
Regex_Caret_Slash_Period_Asterisk |
8.085699324932449 ns/iter |
8.08867601860652 ns/iter |
1.00 |
Regex_Caret_Period_Range_Dollar |
4.6637656085763535 ns/iter |
4.68489834175964 ns/iter |
1.00 |
Regex_Nested_Backtrack |
827.2208850127236 ns/iter |
823.6360329232282 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 (macos/gcc)
Benchmark suite | Current: 2db95e0 | Previous: d1039b8 | Ratio |
---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
2.238706779216325 ns/iter |
2.4195720697651444 ns/iter |
0.93 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
2.276900242609186 ns/iter |
2.3174542852993736 ns/iter |
0.98 |
Regex_Period_Asterisk |
2.239711254342586 ns/iter |
2.34573295774675 ns/iter |
0.95 |
Regex_Group_Period_Asterisk_Group |
2.2772693362197893 ns/iter |
2.392394755450172 ns/iter |
0.95 |
Regex_Period_Plus |
1.9348890939294838 ns/iter |
1.9970364152816449 ns/iter |
0.97 |
Regex_Period |
1.9138526224659398 ns/iter |
2.0219891210105225 ns/iter |
0.95 |
Regex_Caret_Period_Plus_Dollar |
1.8997355759147656 ns/iter |
1.9939159830868136 ns/iter |
0.95 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
1.9222546383948196 ns/iter |
2.1077153542634384 ns/iter |
0.91 |
Regex_Caret_Period_Asterisk_Dollar |
2.295853420199595 ns/iter |
2.353490441479331 ns/iter |
0.98 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
2.5544673426640685 ns/iter |
2.682683548533442 ns/iter |
0.95 |
Regex_Caret_X_Hyphen |
6.459977900189255 ns/iter |
6.906095276325223 ns/iter |
0.94 |
Regex_Period_Md_Dollar |
69.6605678218213 ns/iter |
73.29214143605276 ns/iter |
0.95 |
Regex_Caret_Slash_Period_Asterisk |
4.961370500780377 ns/iter |
5.11486335625981 ns/iter |
0.97 |
Regex_Caret_Period_Range_Dollar |
2.3240602905916172 ns/iter |
2.3275476075501382 ns/iter |
1.00 |
Regex_Nested_Backtrack |
829.8320136259237 ns/iter |
867.4661879869855 ns/iter |
0.96 |
JSON_Array_Of_Objects_Unique |
215.04420435681794 ns/iter |
213.24683500663022 ns/iter |
1.01 |
JSON_Parse_1 |
23223.747522009937 ns/iter |
24996.58601164034 ns/iter |
0.93 |
JSON_Fast_Hash_Helm_Chart_Lock |
23.85564633937753 ns/iter |
25.106959900570214 ns/iter |
0.95 |
JSON_Equality_Helm_Chart_Lock |
115.97209197566717 ns/iter |
121.97786776868148 ns/iter |
0.95 |
JSON_String_Equal/10 |
5.545870972074667 ns/iter |
5.758435847668455 ns/iter |
0.96 |
JSON_String_Equal/100 |
5.237463089325141 ns/iter |
5.486693152532578 ns/iter |
0.95 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.7556957113770741 ns/iter |
0.797841942657607 ns/iter |
0.95 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
3.540298018066274 ns/iter |
3.7041075376409105 ns/iter |
0.96 |
JSON_String_Fast_Hash/10 |
1.975225873041155 ns/iter |
2.0221980617441124 ns/iter |
0.98 |
JSON_String_Fast_Hash/100 |
1.9469719924805102 ns/iter |
2.023561221865578 ns/iter |
0.96 |
JSON_String_Key_Hash/10 |
1.4618624871821306 ns/iter |
1.5005616754259958 ns/iter |
0.97 |
JSON_String_Key_Hash/100 |
1.9362214965081441 ns/iter |
2.069351140277079 ns/iter |
0.94 |
JSON_Object_Defines_Miss_Same_Length |
1.7509916088003183 ns/iter |
1.8334778564425385 ns/iter |
0.96 |
JSON_Object_Defines_Miss_Too_Small |
2.0352011569468815 ns/iter |
2.0728651951016746 ns/iter |
0.98 |
JSON_Object_Defines_Miss_Too_Large |
1.9010308395194533 ns/iter |
1.876194814754322 ns/iter |
1.01 |
Pointer_Object_Traverse |
55.33004870106723 ns/iter |
59.14382191972436 ns/iter |
0.94 |
Pointer_Object_Try_Traverse |
36.15549985370193 ns/iter |
38.44343493689406 ns/iter |
0.94 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
158.71665635762633 ns/iter |
186.46083669995804 ns/iter |
0.85 |
This comment was automatically generated by workflow using github-action-benchmark.
Signed-off-by: Juan Cruz Viotti jv@jviotti.com