实测 对数字字符串转成数字的效率比较
发布于 10 年前 作者 captainblue2013 9066 次预览 最后一次回复是 10 年前 来自 分享
代码:
var a = '1' ;
for (var i = 0; i < 100000000; i++) {
parseInt(a); //方案一
// a * 1; //方案二
}
console.log(process.uptime());
结果,单位秒: 方案一: 1.559 , 1.492 , 1.523 方案二:3.841 , 3.899 , 3.877
19 回复
parseint是内置的方法 自豪地采用 CNodeJS ionic
我习惯 a - 0
用 parseInt 时要加上第二个参数,除非有特定用途。可以试试 parseInt(xxx, 10)。
哇塞,长经验了。我一般情况下也是使用方案一,当然是只知道第一种方法而已。不过我记得方案二的做法应该会涉及到字符串对象和数字对象的转换,故比较耗时
process.uptime()不适合做基准测试吧:)方案二是分了两个步骤:
直接Number呢?
这种测试有何意义?假设你的程序是普通 web 应用,单进程能每秒响应 100w 次?
@luinlee 看了,第二个参数默认是10
@dayuoba 那应该用哪个比较好?
@captainblue2013 process.uptime是进程运行的时间,这个时间包含进程开始初始化等等过程,显然是不合理的。 高精度的process.hrtime,精确到纳秒。
长知识了
@captainblue2013 不是的,比较一下 parseInt(‘0x10’) 和 parseInt(‘0x10’, 10)。然后再比较一下 parseInt(xxx, 10) 和 parseInt(xxx) 的性能。
@captainblue2013 我自己一般用
@luinlee
Result:
@DoubleSpout 好歧义啊。
为什么我觉得这样
+'1'是最常用的。。。@alsotang 就是把字符串的数字转为数字呀,比如 ‘1.11’-0 就可以转成数字了,这个比parseInt只能转整数通用一些。。。
@booxood 也这么觉得