【发布时间】:2017-06-25 03:13:25
【问题描述】:
所以我在看 Franziska Hinkelmann 的 talk on the V8 engine。
她在 20:03 发现,如果对象类型超过四种,V8 引擎将不会优化。我刚开始使用 node.js,所以我在这些事情上没有任何经验,但是四个似乎是一个非常低的数字。 OO软件通常不会涉及四种以上的对象类型吗?
我知道 V8 对对象可以具有的用于快速处理的属性数量有限制(8 个,似乎也很少)。
【问题讨论】:
-
我可能会插话说,如果你刚开始使用 nodejs,你可能有 1000 多关于 node.js 和 Javascript 的重要知识要学习,一般来说,比 V8 优化。
-
同意,但我是一个有计划的人。如果 V8 与普通的 OOP 不兼容,那是需要考虑的。
-
呃,V8完美兼容普通OOP。有数百万行代码在执行广泛的 OOP,而 V8 可能是最好的性能引擎。 99.9999% 的代码根本不关心您关心的优化级别。学习一些破坏优化的编程“不要做”会很有用,但如果你只是在严格模式下编程,你会很好地做到这一点。并且在 OOP 中编程,nodejs 将执行得很好。
-
另外,仅仅因为 V8 具有某些优化以在某些情况下使事情变得非常快并不意味着您不能编写无法使用所有这些优化的代码。这就是优化编译器所做的。他们寻找他们知道可以优化的东西(适合他们设计的某些模式)并大大加快速度。 99.9999% 的情况下,我们不需要担心这一点,当然在第一次学习语言时也不需要。还有很多其他因素会影响您最终结果的质量,远远超过您现在询问的水平。
-
我建议您阅读以下内容:Optimization killers 并避免在您的所有编码中使用这些内容(也许在没有其他方法并且您接受后果时偶尔会出现有意识的例外)。但是,我不会花时间担心一个对象有多少属性。
标签: javascript node.js oop v8