node.js与java性能测试 (http与redis访问)(贴出测试用例,代码以及测试结果)
发布于 11 年前 作者 2225377fjs 11374 次浏览 最后一次编辑是 8 年前

http://blog.csdn.net/fjslovejhl/article/details/13298047

只是个人觉得以前的各种测试都不是太合理。。。要么比较偏袒java,要么比较偏袒node.js 另外对测试用例以及测试的代码如果有什么不对的地方,还请大家指正出来。。。。

8 回复

还算比较客观了。。 还是只能说,每个语言有自己的好坏。。 还是要看个人洗好和应用场景

50 并发? 为啥不搞大一些?

话说,java 的服务端的性能其实不差啊…

Node.js 更多的比较对象是PHP…

如果压测不压到极限的话,很难看出两者的差异,楼主可以试一下用四台压一台。

ab 这种东西还是内网测试比较好,从中国往美国东部这跨度太广,带宽和响应速度都跟不上。内网响应低带宽大,很容易看出差距。而且也不会有被IDC封掉的危险。

亲,nodejs的redis client你装了hiredis模块了么?

Pieter Noordhuis has provided a binding to the official hiredis C library, which is non-blocking and fast. To use hiredis, do: npm install hiredis redis

https://github.com/mranney/node_redis#redis—a-nodejs-redis-client

其实做这样子的测试没啥太大的压力,说来说去到最后,不管是c语言,node.js,还是java到最后都是一些I/O多路复用的东西,本质上都是一样的。。。以前开发东西的时候,也做过类似的测试,用libevent和C语言与node.js做了对比,跑满内网路由器的情况下,c语言实现的版本cpu和内存都要好的多,这次做的测试,同样java的也比node.js在CPU方面好得多。。那么在底层I/O大家都本质上没有太大的区别的情况下单纯的比较性能就能够推理出谁更好了。。。 其实感觉更关注每种语言与技术适合的范围可能意义更大一些。。。。之前自己采用node.js来开发而不是采用C+libevent的版本就是因为觉得node.js的开发更快,而且相对C,更有把握。。。

@2225377fjs 网络层的性能测试(不包括业务逻辑)说到底是IO模型的性能测试,node.js采用了libeio异步库(封装了windows和linux异步io实现的差异,linux采用线程池+阻塞IO来模拟异步IO;windows采用IOCP;)java中可以自己实现nio模型,不过netty做得非常牛逼了,并且在内存拷贝方面做了很多优化。 即使基于同样的IO模型,不同的实现方式对性能会有些差异,应用到语言层面差异会被放大,这个在做平台选型会比较关注。我更愿意看到性能测试提供一种参考,同样的QPS(Latency)对应的成本(服务器数目)。

回到顶部