Nodejs的一点小花边
Nodejs的一点小花边
每次群上有人讨论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
Nodejs的一点小花边
每次群上有人讨论Node.js,都会显得特别热闹,针对大家讨论的热点问题,我百度谷歌了一些资料作为参考。
一、为什么叫Node.js,跟JavaScript有什么关系?
事实上,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。在我看来,JavaScript相当于一种高级语言,为编程带来便利。当然,在执行具体操作时,我们没必要过多关注底层细节,因为最终执行的还是机器语言。不过,Node.js的强大不仅在于支持JavaScript,还在于让前端工程师也能参与到后端开发当中。只要效率足够高,描述能力足够强,甚至会出现node-lua
或node-ruby
这样的项目。
示例代码:Node.js 基本使用
// app.js
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
上述代码创建了一个简单的HTTP服务器,监听3000端口,返回"Hello World"文本。
二、Node.js的性能到底如何?
每次提到性能如何,总会有人出来说,V8牛逼,所以Node.js厉害,但到底V8跟Node.js是什么关系呢?V8的优势又是啥呢?
V8引擎,是由几个核心部分组成的:
-
基础编译器(Base Compiler):在代码运行之前,它会分析你的JavaScript代码并生成本地机器码,而不是通过字节码的方式来运行,也不是简单地解释它。这种机器码起初是没有被高度优化的。
-
对象模型(Object Model):V8通过隐藏类(Hidden Classes)的方式来表示对象,这是一种可以优化查找的内部类型机制。
-
运行期剖析器(Runtime Profiler):它会监视正在运行的系统,并且标识出“热点”函数,也就是那些最后会花费大量运行时间的代码。
-
优化编译器(Optimizing Compiler):重新编译并优化运行期剖析器所标识的“热点”代码,然后执行优化,例如,把代码进行内联化。
-
逆优化(Deoptimization):如果优化编译器发现某些假定情况下过度优化了代码,它会把这些代码从生成的代码中抽离出来。
-
垃圾回收器(Garbage Collector):理解它是如何运作的和理解如何优化你的JavaScript代码同等重要。
结论:V8为Node.js带来了一套优秀的语言解释方案
三、Node.js的性能到底如何?
为了评估Node.js的性能,我们可以参考一些性能测试报告。例如,一篇名为《C++ vs Node.js》的文章比较了C++和Node.js的性能差异。另一篇名为《Node.js调研与服务性能测试》的文章也提供了详细的性能测试结果。
总结来说,Node.js的性能还不错,特别是在处理I/O密集型任务时表现出色。
四、有什么网站实际应用了Node.js?
Node.js已经被许多知名网站和公司采用,包括但不限于:
- PayPal
- Uber
- Netflix
这些公司在生产环境中都使用了Node.js,证明了其在实际应用中的可靠性和高效性。
参考资料:
通过以上内容,我们可以看到Node.js不仅是一个强大的运行环境,而且在性能和实际应用方面都有着不俗的表现。
还是没有说 “为什么叫Node”
Nodejs的一点小花边
每次群上有人讨论Node.js,都会显得特别热闹,针对大家讨论的热点问题,我整理了一些资料作为参考。
一、为什么叫Node.js,跟JavaScript有什么关系?
事实上,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。在我眼里看来,有一个比较激进的看法,JavaScript相当于一种语法糖,为编程带来便利,当执行具体操作时,我们没必要过多关注底层细节,因为最终执行的还是机器语言。Node.js的强大不仅是因为它支持JavaScript,更因为它能够让前端工程师也能参与到后端开发当中,只要效率足够高和有足够的描述能力,甚至可能出现node-lua
或node-ruby
这样的工具。
示例代码:创建一个简单的HTTP服务器
const http = require('http');
// 创建一个简单的HTTP服务器
const server = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
});
// 监听端口
server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
这段代码创建了一个简单的HTTP服务器,监听3000端口,返回“Hello World”。
二、Node.js的性能到底如何?
Node.js的高性能主要归功于其背后的V8引擎。V8引擎主要由以下几个核心部分组成:
- 基础编译器(Base Compiler):在代码运行前,分析JavaScript代码并生成本地机器码。
- 对象模型(Object Model):通过隐藏类(Hidden Classes)优化对象查找。
- 运行期剖析器(Runtime Profiler):监控正在运行的系统,识别出“热点”函数。
- 优化编译器(Optimizing Compiler):对热点代码进行优化,如内联化(Inlining)。
- 逆优化(Deoptimization):若优化过度,则回退到未优化的状态。
- 垃圾回收器(Garbage Collector):管理内存使用。
V8引擎为Node.js提供了一套高效的JavaScript解释方案。
三、Node.js的实际应用案例
许多知名的网站和公司都在使用Node.js,比如:
- Uber 使用 Node.js 进行实时数据处理。
- LinkedIn 使用 Node.js 提升移动应用的后端性能。
- eBay 使用 Node.js 构建实时聊天功能。
这些案例展示了Node.js在各种场景中的强大能力。
四、结语
Node.js 是一个强大的工具,它的高性能和灵活性使其在现代Web开发中占据了一席之地。通过上述内容,我们可以看到Node.js 不仅仅是一种技术,而是一种思维方式的转变,它将前端和后端紧密地结合在一起,提升了开发效率和用户体验。
希望这篇小花边能帮助大家更好地了解Node.js。