gpt4 book ai didi

javascript - 为什么 parseInt() 在 Firefox 中比 *1 慢这么多?

转载 作者:可可西里 更新时间:2023-11-01 01:34:42 25 4
gpt4 key购买 nike

我有一个存储为字符串的值,我知道它永远是一个整数。但我需要它作为一个数字,所以我在做 n = n * 1。然后我想“嗯,我应该只使用 parseInt()。然后我运行了一些 jsperf 测试,Firefox 中的结果很有趣:

http://jsperf.com/parseintx1

总的来说,操作似乎非常相似,除了在 Firefox 中,使用 *1 的速度异常快。这是怎么回事?


编辑

有人进行了 base 10 测试,并整体更新了测试。也可以单击此按钮以提供一些额外的反馈:http://jsperf.com/parseintx1/2

最佳答案

无论如何我都不是 JavaScript 引擎专家,甚至也不是编译器专家,但我很确定这归结为编译器可以告诉这个事实:

var a = "123";
a = a * 1;

实际上完全一样:

var a = 123;

因为“a”是一个局部变量,并且从它的初始化到那个* 1 表达式没有被使用,所以根本没有必要生成代码来执行操作。在那之后,编译器也许还能判断出“a”不可能从函数中“逃脱”,所以做任何事情真的没有意义;也就是说,* 1 测试的结果可能与您从中得到的结果相同:

function() {}

然而,在 parseInt() 的情况下,编译器无法确定 parseInt() 是否真的是 parseInt(),因为它可能已被重新定义。因此,它必须生成代码来进行函数调用。

关于javascript - 为什么 parseInt() 在 Firefox 中比 *1 慢这么多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12163928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com