nodejs代码如下:
//nodeJS
console.time('forNode');
var j=0;
for(var i=0;i<1000000;i++){
j += (i/2+i)/2;
}
console.log("j="+j)
console.timeEnd('forNode');
//C++ for nodejs
console.time('forC++');
var hello = require('./build/Release/hello.node').hello;
console.log("j="+hello)
console.timeEnd('forC++');
其中hello.node是编译好的,代码如下:
#include <node.h>
#include <v8.h>
using namespace v8;
double forfunc(){
double i,j=0;
for(i=0;i<1000000;i++){
j += (i/2+i)/2;
};
return j;
}
void init(Handle<Object> target) {
double j;
j = forfunc();
target->Set(String::NewSymbol("hello"),Number::New(j));
}
NODE_MODULE(hello, init);
java代码如下:
public class HowT {
public static void main(String[] args) {
// TODO Auto-generated method stub
long start = System.currentTimeMillis();
long j=0;
for (int i=0;i<1000000;i++)
{
j+=(i/2+i)/2;
}
long end = System.currentTimeMillis();
System.out.println("j="+j);
System.out.println("forJava: " + (end - start));
}
}
node、node调用c++f结果如下:
E:\快盘\我的代码\node.js\addon>node addon.js
j=374999625000
forNode: 12ms
j=374999625000
forC++: 6ms
java结果如下:
G:\win7\Program Files\Dropbox>java HowT
j=374999250000
forJava: 14
要说明的是:除了由于第一次加载hello.node要花多一点时间外,用node循环所需的时间波动在11-13ms,node for c++循环所需时间波动在5-7ms,java循环所需的时间波动在13-15ms。
另外如果循环体内是简单计算的话(例如简单的累加),node所需要的时间会少于node for c++,v8威武啊。
测试机器:win7 64位系统 8G内存 cpu:Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz 2.33GHz