【发布时间】:2011-02-01 08:54:46
【问题描述】:
我通常不喜欢微基准测试。但是这个有一个非常有趣的结果。
http://ernestdelgado.com/archive/benchmark-on-the-floor/
这表明Math.floor 是在 Javascript 中计算下限的最慢方法。 ~~n、n|n、n&n 都更快了。
这似乎很令人震惊,因为我希望在当今的现代浏览器中实现 Javascript 的人会是一些非常聪明的人。
floor 是否做了其他方法无法做到的重要事情?有什么理由使用它吗?
【问题讨论】:
-
~~n、n|n和n&n不会产生与Math.floor相同的结果。前三个只能返回 32 位整数。试试n = 50000000000.4。 -
在我的浏览器(FF 3.6.something)中,它们在结果中的速度都是相同的(大约为“3”,无论这意味着什么)。在不同的浏览器上尝试(底部提供了小测试),而不是仅仅从表面上获取结果。确实没有理由让它明显变慢。
-
实际上,在 FF 3.6 中运行他的基准测试表明
Math.floor是最快的 -
它们的行为与
Math.floor不同 - 它们与Math.trunc相同,这对于负非整数是不同的。