是Math.abs在javascript中执行需要更多的时间
Is the Math.abs takes more time to execute in javascript
我使用Math.abs获得1000分,如下
Math.abs(a - b) < tolerance;
我的分析器显示Math.abs使用62毫秒,我需要优化它,所以尝试了这个
((a-b) < 0 ?-(a-b) : a-b) < tolerance;
我想知道哪个更好更快
它在很大程度上取决于您在本jsperf中看到的使用的浏览器(和版本),并在SO:的相关问题中进行了讨论
安诺2013可以说:
Math.abs()
在IE、FireFox和Safari中最快- 比特
(x ^ (x >> 31)) - (x >> 31)
在Chrome和Operah中最快 - 三元
(x < 0 ? -x : x)
是FireFox3.x和4时代速度最快的
您可以提供一个动态函数加载程序来启动最佳函数(基于实时浏览器速度评测或浏览器检测),其中包含该浏览器最快的例程
当然,这需要付出几个代价:
- 浪费在浏览器分析(加载页面时的可靠性)或浏览器检测上的时间(嗯,一般来说是可靠性…)
- 用于更大javascript的额外带宽
- (通常)更大的内存占用(因为动态生成的函数通常比静态定义的函数(给定了适当的标识符)慢)
所以总的来说,我更喜欢:Mah.abs()
(因为这通常是最小的并且清楚地指示意图)
然后是三进制(通常与逗号运算符相结合,通过逗号运算符,我只需一次测试就可以执行更多的逻辑,这可以更快/更短,甚至需要更少的编程逻辑)
最后,逐位变体揭示了最不明显的意图,没有提供上述三元优势,只有在不超过32位的情况下才可靠。。
希望这能有所帮助!
相关文章:
- 正在停止.在jquery中的特定时间间隔内,每次迭代的每次执行
- 有没有一种方法可以检查javascript以毫秒为单位执行一个函数需要多长时间
- 如何优化这个jquery循环的执行时间
- 如何在长时间执行JavaScript期间显示微调器
- 不确定react.js的异步执行时间
- AJAX 调用在获得响应并成功执行时会冻结浏览器一段时间
- 如何使用 javascript 停止对 asp.net 进行正在进行的回发(长时间运行的执行)
- 为什么这个正则表达式需要这么长时间才能执行
- 如何在boomrang页面加载时间中添加ajax执行时间
- 作为自动化测试的一部分,监控特定的js事件以及执行它们所需的时间
- javascript执行具有时间间隔的函数
- 执行时间,AMPScript/JavaScript
- 如何在浏览器中使用F12控制台在javascript中每隔一段时间执行一次
- 在给定时间执行不同的nodejs脚本
- 如何使用setTimeout或setInterval设置多个(可能多于两个)函数在不同时间执行
- YUI Compressor Maven插件在错误的时间执行,tomcat插件没有使用YUI - Compressor输
- 在长时间执行过程之前和之后使用Jquery更改元素css
- 在按下鼠标按钮的整个时间执行按钮事件处理程序
- 每次都以相同的持续时间执行代码
- JW播放器根据经过的时间执行操作