为什么V8不能优化try-catch-finally?

时间:2016-06-30 11:01:15

标签: javascript node.js v8

为什么V8无法优化try-catch-finally块,而其他突出的运行时(SpiderMonkey,Chakra)似乎没有问题呢?

1 个答案:

答案 0 :(得分:8)

除了问题的优先级相对较低之外,没有其他特殊原因。

这将在某些时候进行优化

检查一下 chromium v8 issue 1065

如果您定位v8,您可以将try-catch移动到单独的功能,但只有当它是真正的性能问题时才应该这样做,否则它只是过早优化。

  

“程序员浪费了大量时间思考,或者   担心,他们的节目非关键部分的速度,以及   这些效率尝试实际上会产生很大的负面影响   在考虑调试和维护时。我们应该忘记   效率很低,大约97%的时间说:过早优化   是万恶之源。但我们不应该放弃我们的机会   在那个关键的3%“ - 唐纳德克努特

唯一可能永远不会优化的功能是

  • 带有“调试器”声明的函数
  • 调用eval()
  • 的函数
  • 包含“with”语句的函数

优化的其他问题应该在某个时候修复。