***********************************************************
try...catch VS safe-touch
Will run 100,000 times for each test case.
Will test with these retrieve methods:
function impossibleRetrieve(_) { return _[Math.random()][Math.random()] }
function shallowRetrieve(_) { return _.key }
function deepRetrieve(_) { return _.a.b.c.d.e.f.g.h.i }
Testing on Normal Empty Object: {}
By protectByTryCatch
impossibleRetrieve took 965 ms
shallowRetrieve took 3 ms
deepRetrieve took 571 ms
By protectBySafeTouch
impossibleRetrieve took 234 ms
shallowRetrieve took 18 ms
deepRetrieve took 33 ms
Testing on Deep Object: {"a":{"b":{"c":{"d":{"e":{"f":{"g":{"h":{"i":true}}}}}}}}}
By protectByTryCatch
impossibleRetrieve took 857 ms
shallowRetrieve took 3 ms
deepRetrieve took 7 ms
By protectBySafeTouch
impossibleRetrieve took 239 ms
shallowRetrieve took 12 ms
deepRetrieve took 88 ms
Testing on Object.create(null): {}
By protectByTryCatch
impossibleRetrieve took 859 ms
shallowRetrieve took 2 ms
deepRetrieve took 687 ms
By protectBySafeTouch
impossibleRetrieve took 203 ms
shallowRetrieve took 12 ms
deepRetrieve took 35 ms
Testing on null: null
By protectByTryCatch
impossibleRetrieve took 740 ms
shallowRetrieve took 654 ms
deepRetrieve took 665 ms
By protectBySafeTouch
impossibleRetrieve took 197 ms
shallowRetrieve took 11 ms
deepRetrieve took 37 ms
Testing on undefined: undefined
By protectByTryCatch
impossibleRetrieve took 744 ms
shallowRetrieve took 660 ms
deepRetrieve took 666 ms
By protectBySafeTouch
impossibleRetrieve took 178 ms
shallowRetrieve took 5 ms
deepRetrieve took 32 ms
***********************************************************
safe-touch VS chained
Will run 100,000 times for each test case.
Will test with these retrieve methods:
function deepRetrieve(_) { return _.a.b.c.d.e.f.g.h.i }
function deepChainedRetrieve(_) { return _.a && _.a.b && _.a.b.c && _.a.b.c.d && _.a.b.c.d.e && _.a.b.c.d.e.f && _.a.b.c.d.e.f.g && _.a.b.c.d.e.f.g.h && _.a.b.c.d.e.f.g.h.i }
Testing on Deep Object: {"a":{"b":{"c":{"d":{"e":{"f":{"g":{"h":{"i":true}}}}}}}}}
By noProtections
deepRetrieve took 8 ms
deepChainedRetrieve took 4 ms
By protectBySafeTouch
deepRetrieve took 90 ms
deepChainedRetrieve took 402 ms
Last active
November 1, 2018 19:16
-
-
Save EnixCoda/97353613cc6928d621fde13db242b4e3 to your computer and use it in GitHub Desktop.
safe-touch benchmark, MacBookPro 2015 15'
***********************************************************
try...catch VS safe-touch
Will run 100,000 times for each test case.
Will test with these retrieve methods:
function impossibleRetrieve(_) { return _[Math.random()][Math.random()] }
function shallowRetrieve(_) { return _.key }
function deepRetrieve(_) { return _.a.b.c.d.e.f.g.h.i }
Testing on Normal Empty Object: {}
By protectByTryCatch
impossibleRetrieve took 587 ms
shallowRetrieve took 3 ms
deepRetrieve took 416 ms
By protectBySafeTouch
impossibleRetrieve took 239 ms
shallowRetrieve took 38 ms
deepRetrieve took 171 ms
Testing on Deep Object: {"a":{"b":{"c":{"d":{"e":{"f":{"g":{"h":{"i":true}}}}}}}}}
By protectByTryCatch
impossibleRetrieve took 581 ms
shallowRetrieve took 3 ms
deepRetrieve took 6 ms
By protectBySafeTouch
impossibleRetrieve took 242 ms
shallowRetrieve took 30 ms
deepRetrieve took 332 ms
Testing on Object.create(null): {}
By protectByTryCatch
impossibleRetrieve took 622 ms
shallowRetrieve took 3 ms
deepRetrieve took 439 ms
By protectBySafeTouch
impossibleRetrieve took 193 ms
shallowRetrieve took 33 ms
deepRetrieve took 176 ms
Testing on null: null
By protectByTryCatch
impossibleRetrieve took 500 ms
shallowRetrieve took 439 ms
deepRetrieve took 443 ms
By protectBySafeTouch
impossibleRetrieve took 206 ms
shallowRetrieve took 30 ms
deepRetrieve took 178 ms
Testing on undefined: undefined
By protectByTryCatch
impossibleRetrieve took 504 ms
shallowRetrieve took 443 ms
deepRetrieve took 437 ms
By protectBySafeTouch
impossibleRetrieve took 249 ms
shallowRetrieve took 45 ms
deepRetrieve took 175 ms
***********************************************************
safe-touch VS chained
Will run 100,000 times for each test case.
Will test with these retrieve methods:
function deepRetrieve(_) { return _.a.b.c.d.e.f.g.h.i }
function deepChainedRetrieve(_) { return _.a && _.a.b && _.a.b.c && _.a.b.c.d && _.a.b.c.d.e && _.a.b.c.d.e.f && _.a.b.c.d.e.f.g && _.a.b.c.d.e.f.g.h && _.a.b.c.d.e.f.g.h.i }
Testing on Deep Object: {"a":{"b":{"c":{"d":{"e":{"f":{"g":{"h":{"i":true}}}}}}}}}
By noProtections
deepRetrieve took 6 ms
deepChainedRetrieve took 3 ms
By protectBySafeTouch
deepRetrieve took 340 ms
deepChainedRetrieve took 1,638 ms
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment