4 ms·
I thought that was an interesting comment, I did wonder originally if this could be something like that, but didn't follow up. So now I took the time to try to
by gorhill 12y ago
I thought that was an interesting comment, I did wonder originally if this could be something like that, but didn't follow up.
So now I took the time to try to go around this by rearranging the calls, and all of a sudden results make more sense:
http://jsperf.com/makekey-concat-vs-join/10 http://jsperf.com/makekey-concat-vs-join/10
Results:
1. Firefox 29 makeKeyConcat / makeKeyConcatObj = ~440 Mops/s
2. Firefox 29 makeKeyCodepoint / makeKeyCodepointObj = ~64 Mops/s
3. Chrome 34 makeKeyCodepoint / makeKeyCodepointObj = ~5.7 Mops/s
4. Chrome 34 makeKeyConcat / makeKeyConcatObj = = ~2.2 Mops/s
- bzbarsky 12y agoFor what it's worth, as far as I can tell SpiderMonkey is still more or less optimizing away the makeKeyConcat / makeKeyConcatObj testcases in Firefox 29, and all of them on trunk. I bet it's inlining the functions, discovering the arguments are constant strings and hence the return values are constant, constant-folding the if conditions, etc... I tried to work around that in http://jsperf.com/makekey-concat-vs-join/11 http://jsperf.com/makekey-concat-vs-join/11 but clearly that's not good enough. Microbenchmarking a decent optimizing compiler is hard; it will typically be able to figure out that the ubench is pointless and optimize it all away...
- tantalor 12y agoCool! Now it looks like the object case is slightly slower, which is exactly what I'd expect.