测试代码如下:
function ceshi() {
console.log("json字符串parse效率测试");
var obj = {"taitoulx":"企业(或个人或事业单位)","fapiaott":"发票抬头","shuihao":"纳税识别号","kaihuyh":"开户银行","yinhangzh":"银行账户","qiyedz":"企业地址","qiyedh":"企业电话","default":"是否默认(true或false)"};
var jsonstr = JSON.stringify(obj);
var spstr = "taitoulx:企业(或个人或事业单位);fapiaott:发票抬头;shuihao:纳税识别号;kaihuyh:开户银行;yinhangzh:银行账户;qiyedz:企业地址;qiyedh:企业电话;default:是否默认(true或false)";
var j1,j2,s1,s2;
//console.log(new Date());
j1 = new Date();
var m = 0;
var obj1= {};
for (var i = 0; i < 150000; i++) {
obj1=JSON.parse(jsonstr);
m = m+ 1;
}
//console.log(new Date());
j2 = new Date();
console.log("执行次数"+m);
console.log("执行用时:"+(j2.getTime()-j1.getTime()));
console.log(JSON.stringify(obj1));
console.log("字符串分隔符转为json效率测试");
//console.log(new Date());
s1 = new Date();
var n = 0;
var obj = {};
for (var i = 0; i < 150000; i++) {
var arr = spstr.split(';');
for(var j = 0;j<arr.length;j++){
var objarr = arr[j].split(":");
obj[objarr[0]]=objarr[1];
}
n = n+ 1;
}
//console.log(new Date());
s2 = new Date();
console.log("执行次数"+n);
console.log("执行用时:"+(s2.getTime()-s1.getTime()));
console.log(JSON.stringify(obj));
}
ceshi();
从目前的执行来看,split()+循环的方式,比直接JSON.parse()效率要快上一些,在一些序列化数据处理的时候,可以考虑直接使用特殊字符间隔的形式保存,读取解析时可以使用循环+split的方式再转为JSON,当然如果数据量不大的话,两种方式应该都可以.