http://blog.csdn.net/fjslovejhl/article/details/13298047
只是个人觉得以前的各种测试都不是太合理。。。要么比较偏袒java,要么比较偏袒node.js 另外对测试用例以及测试的代码如果有什么不对的地方,还请大家指正出来。。。。
亲,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)对应的成本(服务器数目)。