对于奇数测试,按位AND运算符是否总是比模数快?

问题描述 投票:2回答:1

我正在做一些阅读,试图更好地理解按位运算符并且来到a helpful old blog post from 2012,它表示 - 在随机,正,整数x的奇数测试中 - 评估x & 1在作者的计算机上比评估x % 2快60%。我在网上其他地方读过的东西(包括SO)似乎证实了按位运算符的速度更快。

我以前从未在jsperf中编写过性能测试,但我有兴趣测试一下,看看Javascript中存在多大差异。我惊讶地发现,在对几种不同的浏览器和设备进行测试后,模数看起来更快。

结果

Chrome on Chromebook

Chrome on Chromebook

Chrome on Huawei P8

Chrome on Huawei P8

Chrome on Macbook Pro

Chrome on Macbook Pro

Firefox on Macbook Pro

Firefox on Macbook Pro

Safari on Macbook Pro

Safari on Macbook Pro

Safari on Macbook Air

Safari on Macbook Air

我运行了几次测试以检查结果是否一致。在FF和Chrome上有相当一致的赢家,虽然Safari确实有更多的摇摆。

由于我根本没有性能测试的经验,我是否以某种方式严重错误地编写了测试?如果不是,现代设备和浏览器是否会以某种方式导致模数运算符的性能优于按位AND(或性能差异可忽略不计)?这甚至是以此为基准的适当方式吗?

还是还有其他事情我还不明白? (最有可能的!)

javascript performance performance-testing bitwise-operators logical-operators
1个回答
1
投票

我想你已经回答了自己的问题。总是这样吗?显然不是。与许多其他JavaScript一样,结果严重依赖于浏览器,因为每个都有自己的引擎或实现。

© www.soinside.com 2019 - 2024. All rights reserved.