字符串拼接方法在不同浏览器引擎的差异测试结论
测试基本结论如下:
更快的字符串相加方式:
很多人误以为数组push方法拼接字符串会比+=快,要知道这仅仅是IE6-8的浏览器下(据我测试,IE7其实还是+=的性能好些)。
实测表明现代浏览器使用+=会比数组push方法快,而在v8引擎中,使用+=方式比数组拼接快4.7倍。
所以最好的优化策略是根据JavaScript引擎特性采用了两种不同的字符串拼接方式。
测试代码:
[htML]
!DOCTYPE HTML PubLIC "-//W3C//DTD HTML 4.0 TransITional//EN">
HTML>
HEAD>
TITLE>
字符串拼接方法在不同浏览器引擎的差异测试/TITLE>
mETA NamE="Generator" CONTENT="EditPlus">
META NAME="Author" CONTENT="">
META NAME="Keywords" CONTENT="">
META NAME="Description" CONTENT="">
/HEAD>
BODY>
p id='result'>
/p>
SCRIPT LANGUAGE="JavaScript">
!--
/*
测试结论如下:
更快的字符串相加方式
很多人误以为数组push方法拼接字符串会比+=快,要知道这仅仅是IE6-8的浏览器下。
实测表明现代浏览器使用+=会比数组push方法快,而在v8引擎中,使用+=方式比数组拼接快4.7倍。
所以rtTemplate根据JavaScript引擎特性采用了两种不同的字符串拼接方式。
*/
function show_result(key, val) {
VAR oDiv = document.getElementById('result');
var oChildDiv = document.createElement('p');
oChildDiv.innerHTML = key + '=' + val;
oDiv.appendChild(oChildDiv)
}
;
var total_loop = 20000;
//定义字符串拼接操作的执行次数
var append_str = 'a';
//用于拼接的字符,为了测试方便,这里每次只进行拼接一个字符
var total_times = 100;
//测试的案例执行次数
//执行total_times次字符串+=操作,并输出每次的时间,并计算平均耗时
var s = '', beg = 0, end = 0, dif = 0;
var plus_total_time = 0;
//执行total_times的总时间
for(var tt = 0;
tt total_times;
tt++ ) {
//每次均进行初始化
s= '';
beg = new Date();
for(var loop = 0;
loop total_loop;
loop++) {
s += append_str;
}
end = new Date();
dif = end - beg;
plus_total_time += dif;
//累计时间,用于计算平均值
//输出每次的时间
show_result('第'+(tt+1)+'次所花时间', dif);
}
//输出瓶颈时间
show_result('+=操作平均次所花时间', plus_total_time/total_times);
//执行total_times次字符串数组push操作,并输出每次的时间,并计算平均耗时
s = '', beg = 0, end = 0, dif = 0;
plus_total_time = 0;
//执行total_times的总时间
var arr;
for(var tt = 0;
tt total_times;
tt++ ) {
//每次均进行初始化
s= '', arr = [];
beg = new Date();
for(var loop = 0;
loop total_loop;
loop++) {
arr.push(append_str);
}
s = arr.join();
end = new Date();
dif = end - beg;
plus_total_time += dif;
//累计时间,用于计算平均值
//输出每次的时间
show_result('第'+(tt+1)+'次所花时间', dif);
}
//输出瓶颈时间
show_result('push操作平均次所花时间', plus_total_time/total_times);
//-->
/SCRIPT>
/BODY>
/HTML>
测试数据:
chrome:
当执行拼接次数20000次的时候:push的性能比+=略好:push耗时:0.37,+=耗时:0.51
当执行拼接次数200000次的时候:+=的性能比push好很多:push耗时:37.03,+=耗时:4.49
FireFox:
当执行拼接次数200000次的时候:+=的性能比push略好:push耗时:9.92,+=耗时:6.47
当执行拼接次数20000次的时候:+=的性能比push略好:push耗时:0.77,+=耗时:0.54
FF还是比较稳定的。
测试基本结论如下:
更快的字符串相加方式:
很多人误以为数组push方法拼接字符串会比+=快,要知道这仅仅是IE6-8的浏览器下(据我测试,IE7其实还是+=的性能好些)。
实测表明现代浏览器使用+=会比数组push方法快,而在v8引擎中,使用+=方式比数组拼接快4.7倍。
所以最好的优化策略是根据JavaScript引擎特性采用了两种不同的字符串拼接方式。
测试代码:
[html]
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
HTML>
HEAD>
TITLE>
字符串拼接方法在不同浏览器引擎的差异测试/TITLE>
META NAME="Generator" CONTENT="EditPlus">
META NAME="Author" CONTENT="">
META NAME="Keywords" CONTENT="">
META NAME="Description" CONTENT="">
/HEAD>
BODY>
p id='result'>
/p>
SCRIPT LANGUAGE="JavaScript">
!--
/*
测试结论如下:
更快的字符串相加方式
很多人误以为数组push方法拼接字符串会比+=快,要知道这仅仅是IE6-8的浏览器下。
实测表明现代浏览器使用+=会比数组push方法快,而在v8引擎中,使用+=方式比数组拼接快4.7倍。
所以rtTemplate根据JavaScript引擎特性采用了两种不同的字符串拼接方式。
*/
function show_result(key, val) {
var oDiv = document.getElementById('result');
var oChildDiv = document.createElement('p');
oChildDiv.innerHTML = key + '=' + val;
oDiv.appendChild(oChildDiv)
}
;
var total_loop = 20000;
//定义字符串拼接操作的执行次数
var append_str = 'a';
//用于拼接的字符,为了测试方便,这里每次只进行拼接一个字符
var total_times = 100;
//测试的案例执行次数
//执行total_times次字符串+=操作,并输出每次的时间,并计算平均耗时
var s = '', beg = 0, end = 0, dif = 0;
var plus_total_time = 0;
//执行total_times的总时间
for(var tt = 0;
tt total_times;
tt++ ) {
//每次均进行初始化
s= '';
beg = new Date();
for(var loop = 0;
loop total_loop;
loop++) {
s += append_str;
}
end = new Date();
dif = end - beg;
plus_total_time += dif;
//累计时间,用于计算平均值
//输出每次的时间
show_result('第'+(tt+1)+'次所花时间', dif);
}
//输出瓶颈时间
show_result('+=操作平均次所花时间', plus_total_time/total_times);
//执行total_times次字符串数组push操作,并输出每次的时间,并计算平均耗时
s = '', beg = 0, end = 0, dif = 0;
plus_total_time = 0;
//执行total_times的总时间
var arr;
for(var tt = 0;
tt total_times;
tt++ ) {
//每次均进行初始化
s= '', arr = [];
beg = new Date();
for(var loop = 0;
loop total_loop;
loop++) {
arr.push(append_str);
}
s = arr.join();
end = new Date();
dif = end - beg;
plus_total_time += dif;
//累计时间,用于计算平均值
//输出每次的时间
show_result('第'+(tt+1)+'次所花时间', dif);
}
//输出瓶颈时间
show_result('push操作平均次所花时间', plus_total_time/total_times);
//-->
/SCRIPT>
/BODY>
/HTML>
测试数据:
chrome:
当执行拼接次数20000次的时候:push的性能比+=略好:push耗时:0.37,+=耗时:0.51
当执行拼接次数200000次的时候:+=的性能比push好很多:push耗时:37.03,+=耗时:4.49
FireFox:
当执行拼接次数200000次的时候:+=的性能比push略好:push耗时:9.92,+=耗时:6.47
当执行拼接次数20000次的时候:+=的性能比push略好:push耗时:0.77,+=耗时:0.54
FF还是比较稳定的。
觉得可用,就经常来吧! 欢迎评论哦! html5教程,巧夺天工,精雕玉琢。小宝典献丑了!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 字符串拼接方法在不同浏览器引擎的差异测试结论
本文地址: https://pptw.com/jishu/586517.html