Pat*_*son 0 javascript safari firefox google-chrome
我写了一篇JS perf,表明通过数量减少解析数字中的数字比通过字符串评估(对于排序任务)更快.我发现虽然幅度减少算法对更长的数字(不是每个数字,但总共)执行操作更快,即使它应该为更长的数字循环更多次.它发生在OS X上的Chrome,Safari和Firefox中(尚未测试其他操作系统).
任何想法这里发生了什么?
这是perf:http://jsperf.com/get-digits-from-integer
编辑这里是一个perf,显示不同数字8,16,32,64和128的差异.只有8位数字比预期的慢,16位数,性能随着数字变长而减慢.http://jsperf.com/get-digits-from-integer/3
这是有问题的功能:
function getDigitsByMagnitudeReduction(num){
var digits = [];
while (num > 0){
digits.push(num % 10);
num = (num / 10) >> 0;
}
return digits.reverse();
}
Run Code Online (Sandbox Code Playgroud)
在检查函数的性能之前,应检查它是否实际返回了正确的结果.
您正在使用>> 0截断数字为整数.按位运算使用32位数字,因此该函数仅适用于最多的数字21474836479.
如果你使用num = Math.floor((num / 10));它将使用更大的数字,但JavaScript中数字的精度限制为15-17位,因此结果和for 91827766102983847569298376298387839都不91882759110292883726299387440027766102983847569298376298387839正确.
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |