【问题标题】:NodeJS: Would App Run Faster if Freeze Objects?NodeJS:如果冻结对象,应用程序会运行得更快吗?
【发布时间】:2014-06-05 01:15:39
【问题描述】:

我的大部分对象/功能都没有改变。如果我通过Object.freeze(object) 冻结大部分对象,应用程序会运行得更快吗?还是根本没有区别?

【问题讨论】:

  • 我最近创建了一个节点 js 库fast-freeze,它使用嵌套函数使对象只读。结果,访问属性变得比正常的未冻结对象更快。虽然用 vanilla js 看起来很难看,但值得一试。

标签: javascript node.js performance object


【解决方案1】:

冻结(和密封)会导致显着的性能下降,而不是在各种浏览器中获得收益。只需在 jsperf benchmarkssome 中获取 look

编辑:Here 是 v8 的相关问题。

【讨论】:

  • 如果你详细阅读了那个错误,它认为一些基准测试是错误的,Object.freeze() 现在已经在 Chrome 中修复,所以它不像以前那样慢. Object.seal() 显然尚未修复。
  • 在 Windows NT 6.3 64 位上使用 Chrome 36.0.1941.0 32 位,三者之间似乎没有什么不同。我将直接在我的 Nodejs 服务器上进行测试。
  • 好的,使用 Nodejs,冻结对象似乎比我的计算机上的常规速度慢 30-40%。
  • @RainingChain - 请记住,新的节点版本偶尔会包含更新的 v8,因此在某些时候,您会看到冻结对象和普通对象之间的节点版本收敛,就像我们在 Chrome 中看到的一样观点。从v8 changelog,他们显然在 v8 的 3.19.4 版本中“使 Object.freeze 快速”。您可以使用process.versions.v8 获取 Node.js 的 v8 版本。 Node v 0.11 远远超出,但似乎 0.10.25 是 3.14.5 并带有一些向后移植修复。期待尽快发布稳定的新主要节点。
  • Chrome 现在在迭代冻结对象时稍快(大约
猜你喜欢
  • 1970-01-01
  • 2014-12-10
  • 1970-01-01
  • 1970-01-01
  • 2012-04-11
  • 2021-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多