对Node.js的异步IO性能探讨
Python和露比也有这样的一个框架,而是因为他们使用在实际使用中包含同步代码库,所以我们不能长大,但在Node.js Javascript的服务器端编程几乎是空的,所以Node.js能建立一个所有IO异步代码库。大多数Web应用程序的瓶颈是IO、读写磁盘、读写网络和读写数据库,提高性能的关键是如何使用策略等待这段时间。
PHP策略:多进程操作,直接等待IO完成。缺点:多进程消耗更多内存,进程之间很难共享数据。
C / C++的常用策略:多线程运行,和节目本身保持锁定状态。缺点:开发成本高,容易出错,不易调试。
Python(龙卷风):多个请求在一个进程中轮流,当遇到IO时切换到另一个请求。
什么是最有效地利用时间例如,有两个不相关的数据库查询。在PHP中,通常会有一个执行。执行后,第二个将被执行(总时间是A + B)。显然,这不是最有效的,同时应该执行两个查询。时间是max(A,B)。
Python和其他多线程支持语言的问题是,在语言级别,程序员很难告诉虚拟机。他们应该同时执行两个操作,即使有办法,也很麻烦。大多数人都懒得用它。因为Node.js已经迫使所有IO异步执行,Node.js的程序员也可以说是数百次,在代码库的可读性有所改善(承诺,异步),你可以很容易地并行执行操作无关紧要。
随着异步IO的实现,异步IO的优点是什么事实上,异步IO不会神奇地减少服务器的压力。服务器添加相同的服务器,但异步IO降低单个请求的时间和消除无谓的等待时间在一个单一的要求。所以在单位时间内处理的要求没有变化,但每个请求的处理时间减少了。从这一点来看,服务器还可以节省一些资源这是通过为每个请求,保持连接的内存消耗。