A clever JS performance exploration by creator of Angular(.js)
JavaScript "number" (based on IEEE 754 floating point numbers standard format)
has a separate representation for "negative 0" and "normal zero".
A bit strange.
The consequence is that a trivial expression "a = -x" is much slower than "a = 0 - x"
How much: 3x in Chrome, 5x is Safari, 10x in Firefox!
But why?
Because "negative zero" can not be encoded as an integer, and instead needs to be a floating point.
The result is that all operations that are very fast with integers now need to check data type and convert from floating point and back, and that is slow!