nodejs学习笔记(3)

在看了Node8的特性后的总结,后续慢慢补充。promise

主要是针对一些编码规范,Node的v8引擎因为不一样于其余语言的解析策略,所以须要注意一些特殊的方面。函数


一、try/catch使用对代码运行性能影响明显,尽可能减小使用范围
写在for循环体内的try/catch语句可能会与代码优化引擎冲突,引发反优化/再优化的无穷循环性能

 

二、尽可能减小使用delete,v8引擎查找动态特性和原型链的方式很是复杂,性能较差优化

v8引擎使用C++实现,每一个对象在建立时,底层都会根据原型链建立一个对应的hidden class,对象的属性由隐藏类的属性表示,
而运行时动态添加的属性,则以哈希表的形式存储,使用delete时,若是删除的是动态属性,则后续其余属性的查找方式也会从hidden class变成hash set,致使后续运行性能降低
this

能够经过将须要删除的属性赋值为undefined来替代delete,JSON.stringify不会输出值是undefined的属性编码

 

三、debugger关键字对代码性能影响明显debug

 

四、关于promise对象

jQuery链式写法的实现核心是,每一个函数调用都返回this。
promise的实现核心思想相似,每一个调用then方法的对象,都须要返回一个thenable的对象原型链

 

五、注释v8

在低版本的Node代码中,写在函数体内部的注释也会影响v8引擎对代码的优化过程,进而影响代码执行效率。

所以,对于性能要求较高的代码,尽可能减小注释或集中写在函数体外部,不影响调用时的执行效率。

 

六、减小使用多态函数

相似Java中多态的概念,若是一个函数的参数须要同时应对不一样的变量类型,那么在Node8中,相比只须要处理一种特定类型参数的函数,运行性能会降低。

在须要注意运行效率的场景下,有必要注意这一点。

相关文章
相关标签/搜索