node.js的一点小花边
发布于 12 年前 作者 hexie 6409 次浏览 最后一次编辑是 8 年前

每次群上有人讨论node.js,都会显得特别热闹,针对大家讨论的热点问题,百度谷歌了一些资料作为参考。

一、为什么叫Node.js,跟javascripts有什么关系? http://developer.51cto.com/art/201109/288849_1.htm

事实上,Node.js采用C++语言编写而成,是一个Javascript的运行环境。为什么采用C++语言呢?据Node.js创始人Ryan Dahl回忆,他最初希望采用Ruby来写Node.js,但是后来发现Ruby虚拟机的性能不能满足他的要求,后来他尝试采用V8引擎,所以选择了C++语言。

结论:Node不是JavaScript,Node可以运行JavaScript

Node不是JavaScript,Node是一个可以运行JavaScript的程序,但Node绝对不是JavaScript。 在我眼里看来,有一个比较激进的看法,javascripts相当于一个C/C++语言的语法糖,为编程带来便利,当然执行具体操作的时候,我们没必要过多究竟调用谁,因为最后执行的还是机械语言,只是想说,node.js的强大并不只是因为支持javascript,让前端工程师也能参与到后端开发当中,只要效率有足够好和有足够的描述能力,甚至会出现node-lua Node-ruby。

二、Node.js的性能到底如何? 每次提到性能如何,总会有人出来说,V8牛逼,所以node.js厉害,但到底V8跟node.js,是什么关系呢?V8的优势又是啥呢? V8引擎,是由几个核心的部分组成的。

● 一个基本的编译器(basecompiler),在你的代码运行之前,它会分析你的JavaScript代码并且生成本地的机器码,而不是通过字节码的方式来运行,也不是简单地解释它。这种机器码起初是没有被高度优化的。

● V8通过对象模型(objectmodel)来表达你的对象。对象是在JavaScript中是以关联数组的方式呈现的,但是在V8引擎中,它们是通过隐藏类(hiddenclasses)的方式来表示的。这是一种可以优化查找的内部类型机制(internaltypesystem)。

● 一个运行期剖析器(runtimeprofiler),它会监视正在运行的系统,并且标识出“热点”函数(“hot”function),也就是那些最后会花费大量运行时间的代码。

● 一个优化编译器(optimizingcompiler),重新编译并优化运行期剖析器所标识“热点”代码,然后执行优化,例如,把代码进行内联化(inlining)(也就是在函数被调用的地方用函数主体去取代)。

● V8引擎支持逆优化(deoptimization),意味着如果优化编译器发现在某些假定的情况下,把一些已经优化的代码进行了过度的优化,它就会把它门从生成的代码中抽离出来。

● V8拥有垃圾回收器。理解它是如何运作的和理解如何优化你的JavaScript代码同等重要。

结论出来了,V8为node.js带来了一套优秀的语言解释方案。 http://www.alloyteam.com/2012/11/performance-writing-efficient-javascript/

为什么V8这么快.pdf http://www.greenpublishers.com/neat/200901/3coverstory.pdf

三、说那么久,node.js 的性能到底如何? C++ VS node.js http://www.jiangmiao.org/blog/2195.html

node.js调研与服务性能测试** http://www.tbdata.org/archives/1285

总结来说,性能还不错

四、有什么网站实际应用了node.js? https://github.com/joyent/node/wiki/Projects,-Applications,-and-Companies-Using-Node

1 回复

还是没有说 “为什么叫Node”

回到顶部