不容忽视:MongoDB的JavaScript性能
不容忽视:MongoDB的JavaScript性能
测试Mongodb + V8 JavaScript引擎我知道Mongodb的JavaScript引擎是SpiderMonkey, 于是想尝试再编译一个v8版本的Mongodb, 准备用如下JavaScript文件测试一下.
准备测试代码:
function dotest() {var str = "xxxxxxxxxxxxxxxxx0000000000";
var data = str + str + str + str;
var data = data + data + data + data;
var max = 10000;
var arr = [];
var total = 0;
for(var a=0; a<100; a++) {
for(var i=0; i
arr.push( data + " . " + data);
}
for(var i=0; i
total += arr[i].length;
}
arr = [];
}
return total;
}
myecho = (typeof console !== 'undefined' && typeof console.log == 'function') ? console.log : print;
a = new Date();
myecho("begin:\t" + a);
myecho("result:\t" + dotest());
b = new Date();
myecho("end:\t" + b);
myecho("total time:\t" + (b - a));
这个JavaScript脚本能同时跑在4种环境下:
Chrome / Firefox等浏览器环境
node js的shell
SpiderMonkey 的js shell
mongo 的js shell
我准备编译完Mongodb的v8版本后, 四个环境都比较测试一下.
编译mongodb + v8
我在OpenSUSE11.4下, 用linux的包管理工具准备编译环境, 还是很容易的:
#已安装的包: g++ subversion git python
sudo zypper install scons tcsh boost-devel pcre-devel readline-develsvn checkout http://v8.googlecode.com/svn/trunk/ v8
cd v8
scons
cd ..
git clone git://github.com/mongodb/mongo.git
cd mongov8
scons
#run mongodb v8
./mongod --quiet --shardsvr --dbpath /home/dzg/data/mongodb/test/mongod --port 20237 --nohttpinterface --fork --pidfilepath /home/dzg/data/mongodb/test/mongod.pid --logpath /home/dzg/log/mongodb/test/mongod.log --logappend
执行测试
执行~/opt/mongov8/mongo localhost:20237 dotest.js
mongo+v8 : 93毫秒
nodejs : 68毫秒
SpiderMonkey : 442毫秒
初步结论:
mongodb + v8性能非常好, 接近node.js里面的执行性能。
SpiderMonkey 1.9 比v8慢5倍。
mongodb使用SpiderMonkey肯有一些环节还存在问题, 导致mongodb+SpiderMonkey比mongodb+v8慢60多倍。
也许是mongodb的SpiderMonkey版本低? 我目前还不知道mongodb的发行版内, SpiderMonkey的确切版本.
我上面测试SpiderMonkey 的js命令是来自xulrunner-192。
测试代码很短, 比较片面, 上面的性能倍数只是大体估计, 不是全面精确的评估。
|
评论暂时关闭