Javascript 在函数中声明常量
我想知道这两个系统之间是否有性能差异Javascript 在函数中声明常量,javascript,performance,Javascript,Performance,我想知道这两个系统之间是否有性能差异 var DATA = {a: 1, b: 2, ....}; function f() { ... use but do not modify DATA; } 及 在现代Javascript引擎中。理论上,在后一种代码中,必须在每次函数调用时创建结构。但是引擎可以看到它没有被改变,并保留它以供重用 我非常清楚过早的优化陷阱和可读性比性能更重要;我只是好奇。由于jsperf下降了,我认为自己没有简单的方法获得一些数据 使现代化 鉴于此,看起来至少V
var DATA = {a: 1, b: 2, ....};
function f() {
... use but do not modify DATA;
}
及
在现代Javascript引擎中。理论上,在后一种代码中,必须在每次函数调用时创建结构。但是引擎可以看到它没有被改变,并保留它以供重用
我非常清楚过早的优化陷阱和可读性比性能更重要;我只是好奇。由于jsperf下降了,我认为自己没有简单的方法获得一些数据
使现代化
鉴于此,看起来至少V8可以进行写时复制,所以在大多数现代浏览器中它可能是免费的
考虑到现代JS引擎的工作方式,手动对这些东西进行基准测试是徒劳的,请不要向任何人推荐。许多优化在几次迭代后就开始了,然后可能会发生更多的评测、死代码消除等。我不知道jsperf(有点像ATM)是否可以做到这一点,但手动执行是没有意义的(比较)。相比之下会有性能差异。当你比较两者的时间线时。我们将观察到带有局部变量的函数工作得很快。无论您使用局部变量调用函数多少次,第二种类型的性能都会获胜。我不明白。jsPerf已关闭,请StackOverflow为您执行此操作?或者您是在问如何在没有jsPerf的情况下进行性能测试?只是不知道你在追求什么。似乎离题了。选民们,请解释一下这个问题有什么问题!问JS性能是被禁止的还是什么?开发人员工具有一对有用的
console.time/console.timeEnd
对。人们通常只是进行典型的n
迭代循环,以便更好地了解差异<代码>控制台时间(“foo”);/*do work*/console.timeEnd(“foo”)代码>不完美,但这似乎并不重要。
function f() {
var DATA = {a: 1, b: 2, ....};
... use but do not modify DATA;
}