性能测评:Node.JS比Java EE快20%

时间:2021-09-26 15:58:20
国外某工程师写了一段简单测试脚本,用以比较Java EE和Node.js的性能,结果另他大吃一惊,作为脚本语言的Node.js在竟然比编绎型语言还快了20%,而且还是在不考虑内存消耗的情况下。

他在Mac平台上从CunchDB数据库读取JSON数据,两段测试代码都很短,而且很简单, 代码和结果如下:

Java EE

package com.shinetech.couchDB;
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.log4j.Logger;
 
import com.fourspaces.couchdb.Database;
import com.fourspaces.couchdb.Document;
import com.fourspaces.couchdb.Session;
 
@SuppressWarnings("serial")
public class MyServlet extends HttpServlet {
  Logger logger = Logger.getLogger(this.getClass());
  Session s = new Session("localhost",5984);
  Database db = s.getDatabase("testdb");
 
  public void doGet(HttpServletRequest req, HttpServletResponse res)
    throws IOException {
    String id = req.getPathInfo().substring(1);
    PrintWriter out = res.getWriter();
    Document doc = db.getDocument(id);
    if (doc==null){
      res.setContentType("text/plain");
      out.println("Error: no document with id " + id +" found.");
    } else {
      res.setContentType("application/json");
      out.println(doc.getJSONObject());
    }
    out.close();
  }
}

结果

Concurrent Requests Average Response time (ms)  Requests/second

10 23  422

50  119  416

100  243  408

150  363  411

Node

var http = require ('http'),
  url = require('url'),
  cradle = require('cradle'),
  c = new(cradle.Connection)(
          '127.0.0.1',5984,{cache: false, raw: false}),
  db = c.database('testdb'),
  port=8081;
 
process.on('uncaughtException', function (err) {
  console.log('Caught exception: ' + err);
});
 
http.createServer(function(req,res) {
  var id = url.parse(req.url).pathname.substring(1);
  db.get(id,function(err, doc) {
    if (err) {
      console.log('Error'+err.message);
      res.writeHead(500,{'Content-Type': 'text/plain'});
      res.write('Error' + err.message);
      res.end();
    } else {
      res.writeHead(200,{'Content-Type': 'application/json'});
      res.write(JSON.stringify(doc));
      res.end();
    }
  });
}).listen(port);


结果:

Concurrent Requests  Average Response time (ms)  Requests/second

10  19  509

50  109  453

100  196  507

150  294  506


转自:   ourjs

17 个解决方案

#1


然后咧?。。

#2


听起来很不错的样子

#3


只是某一方面。

#4


jee不可能比js慢,js本身支持json结构,让他测试换成直接返回字符串试试?

#5


doc.getJSONObject()很慢,不过要看对象的复杂程度,如果对象中包含容器和对象,那么会用循环+递规。慢慢慢。

#6


JavaEE慢是正常的  不可能有又高级又高效的东西  越贴近底层效率越高  这是必然的  J2EE的卖点里一向都没有效率这个词

#7


引用 6 楼 sunbo624 的回复:
JavaEE慢是正常的  不可能有又高级又高效的东西  越贴近底层效率越高  这是必然的  J2EE的卖点里一向都没有效率这个词


嗯,个人认为Java运行相当安全,不会死机……

#8


引用 7 楼 c2u 的回复:
Quote: 引用 6 楼 sunbo624 的回复:

JavaEE慢是正常的  不可能有又高级又高效的东西  越贴近底层效率越高  这是必然的  J2EE的卖点里一向都没有效率这个词


嗯,个人认为Java运行相当安全,不会死机……


死不死取决于自己的程序吧   而且我不会认为Java吃CPU能吃到死  通常都是CPU没事内存不够了

#9


口水仗,语言适合项目,适合人员就行了,何必争个高低。

#10


各有利弊吧,我知道Node.js有几家大公司都在用的

#11


引用 10 楼 huxiweng 的回复:
各有利弊吧,我知道Node.js有几家大公司都在用的


Java正在走向封闭……

#12


Java比C慢20%以上,比Java更慢的语言,在网络上也活的很好,速度不是评价开发语言的唯一标准

#13


不明白楼主是要表达什么呢?

#14


表示 Node.js 再怎么牛,市场还是 Java EE 的。

#15


引用 14 楼 zssazrael 的回复:
表示 Node.js 再怎么牛,市场还是 Java EE 的。


以后就不好说了,我们公司正在去Java化……

#16


node.js 是不错,比较而言,开发成本和难度,明显大于java呀。

.net 1人干的活=java 3人= node.js 的一个团队,如果真想做个大项目,用node.js到可以,可是有几个真正意义上的大项目?大多数都需要实现及其复杂的业务逻辑,使用 node.js太慢了,老板会不高兴的

#17


你想说明什么?抛弃java,拥抱node.js吗?

#1


然后咧?。。

#2


听起来很不错的样子

#3


只是某一方面。

#4


jee不可能比js慢,js本身支持json结构,让他测试换成直接返回字符串试试?

#5


doc.getJSONObject()很慢,不过要看对象的复杂程度,如果对象中包含容器和对象,那么会用循环+递规。慢慢慢。

#6


JavaEE慢是正常的  不可能有又高级又高效的东西  越贴近底层效率越高  这是必然的  J2EE的卖点里一向都没有效率这个词

#7


引用 6 楼 sunbo624 的回复:
JavaEE慢是正常的  不可能有又高级又高效的东西  越贴近底层效率越高  这是必然的  J2EE的卖点里一向都没有效率这个词


嗯,个人认为Java运行相当安全,不会死机……

#8


引用 7 楼 c2u 的回复:
Quote: 引用 6 楼 sunbo624 的回复:

JavaEE慢是正常的  不可能有又高级又高效的东西  越贴近底层效率越高  这是必然的  J2EE的卖点里一向都没有效率这个词


嗯,个人认为Java运行相当安全,不会死机……


死不死取决于自己的程序吧   而且我不会认为Java吃CPU能吃到死  通常都是CPU没事内存不够了

#9


口水仗,语言适合项目,适合人员就行了,何必争个高低。

#10


各有利弊吧,我知道Node.js有几家大公司都在用的

#11


引用 10 楼 huxiweng 的回复:
各有利弊吧,我知道Node.js有几家大公司都在用的


Java正在走向封闭……

#12


Java比C慢20%以上,比Java更慢的语言,在网络上也活的很好,速度不是评价开发语言的唯一标准

#13


不明白楼主是要表达什么呢?

#14


表示 Node.js 再怎么牛,市场还是 Java EE 的。

#15


引用 14 楼 zssazrael 的回复:
表示 Node.js 再怎么牛,市场还是 Java EE 的。


以后就不好说了,我们公司正在去Java化……

#16


node.js 是不错,比较而言,开发成本和难度,明显大于java呀。

.net 1人干的活=java 3人= node.js 的一个团队,如果真想做个大项目,用node.js到可以,可是有几个真正意义上的大项目?大多数都需要实现及其复杂的业务逻辑,使用 node.js太慢了,老板会不高兴的

#17


你想说明什么?抛弃java,拥抱node.js吗?