我阅读了下面关于V8引擎和javascript优化的文章。
JavaScript如何工作:在V8引擎内+5提示如何编写优化的代码
根据上述条款,建议:
V8引擎对隐藏类和属性使用隐藏类和缓存机制。因此,避免动态添加对象属性,并避免动态更改属性的类型。相反,使用对象构造函数。
V8引擎将更多的优化应用于经常使用的函数。因此,避免产生许多不同的类似形式的函数,只执行一次。相反,编写代码来重复执行相同的函数。
然后,我有三个问题:
“a”和“b”能否应用于其他浏览器的javascript引擎,如火狐的SpiderMonkey?
二、根据'a',使用类型记录更有利于v8引擎的优化?(使用类型记录,您可以用更少的动态更改对象和属性生成javascript代码)
三、现代JavaScript代码使用了许多具有类似形式的内联函数和匿名函数,如下面的示例代码。根据“b”,使用单一的预定义函数反而更有利?(此示例代码非常简化,以显示多次使用的类似表单函数)
prm.then((res) => {
console.log(res);
}).then((res2) => {
console.log(res2);
}).catch((err) => {
console.log(err);
});发布于 2018-05-05 20:17:29
首先,你的头衔很弱。标题几乎应该以问题的形式出现。例如:“可以优化javascript引擎的代码吗?”
'a‘和'b’可以应用于其他浏览器的javascript引擎,例如火狐的SpiderMonkey吗?
当然,但这取决于那些引擎的开发人员。我不认为在这里问它有什么好处。
根据'a',使用类型记录更有利于v8引擎的优化?
类型记录被编译成Javascript。V8是一个Javascript引擎,所以认为类型记录的编译器为V8或V8做了任何不同的事情,这是在进行任何优化,因为它是如何神奇地知道Javascript来自类型记录的,任何有利的东西充其量都是猜测(除非熟悉代码的人知道其他情况)。
由于TypeScript编译器正试图编写好的/优化的Javascript代码,所以V8只是在利用好的代码。任何人都可以编写好的Javascript,只是编写不好的TypeScript很难。但是需要注意的是,由于每次都以相同的方式编译代码,所以V8可以利用这一点,但是只有当程序员喜欢用类型记录编写代码时,这才是有益的。
现代JavaScript代码使用了许多具有类似形式的内联函数和匿名函数,如下面的示例代码。根据“b”,使用单一的预定义函数反而更有利?
在什么方面有优势?
您的匿名函数很可能已经编译出来了,因为console.log()是唯一被调用的函数,并且很容易被内联。这是个很坏的例子。
至于更复杂的函数,编写单个函数已经是一个很好的遵循原则(别再重复了-干)。因此,任何保持代码干净利落的程序员都不会真正担心任何事情,因为他们已经开始编写了好的代码,随后V8利用了这一点。
不管引擎是什么,答案似乎都是编写好代码。
https://stackoverflow.com/questions/50193537
复制相似问题