JavaScript中全局变量、函数内变量以及常量表达式的效率测试
作者:bea
<html> <body> <script type="text/javascript"> var r, s = "this is a very very looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong string", x = /^s+|s+$/g; document.writeln("字符串测试"); (function(){ docu
<html>
<body>
<script type="text/javascript">
var r, s = "this is a very very looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong string", x =
/^s+|s+$/g;
document.writeln("字符串测试
");
(function(){
document.write("全局->全局:");
var t = new Date();
for(var i = 0; i < 3000000; i++){
r = s;
}
document.write(new Date() - t);
document.writeln("
");
})();
(function(){
document.write("全局->本地:");
var s = window.s;
var t = new Date();
for(var i = 0; i < 3000000; i++){
r = s;
}
document.write(new Date() - t);
document.writeln("
");
})();
(function(){
document.write("常量->本地:");
var r;
var t = new Date();
for(var i = 0; i < 3000000; i++){
r = "this is a very very looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong string";
}
document.write(new Date() - t);
document.writeln("
");
})();
(function(){
document.write("属性->本地:");
var r;
var s = { 0: window.s };
var t = new Date();
for(var i = 0; i < 3000000; i++){
r = s[0];
}
document.write(new Date() - t);
document.writeln("
");
})();
(function(){
document.write("本地->本地:");
var r;
var s = window.s;
var t = new Date();
for(var i = 0; i < 3000000; i++){
r = s;
}
document.write(new Date() - t);
document.writeln("
");
})();
document.writeln("正则表达式测试
");
(function(){
document.write("全局->全局:");
var t = new Date();
for(var i = 0; i < 3000000; i++){
r = x;
}
document.write(new Date() - t);
document.writeln("
");
})();
(function(){
document.write("全局->本地:");
var x = window.x;
var t = new Date();
for(var i = 0; i < 3000000; i++){
r = x;
}
document.write(new Date() - t);
document.writeln("
");
})();
(function(){
document.write("常量->本地:");
var r;
var t = new Date();
for(var i = 0; i < 3000000; i++){
r = /^s+|s+$/g;
}
document.write(new Date() - t);
document.writeln("
");
})();
(function(){
document.write("属性->本地:");
var r;
var x = { 0: window.x };
var t = new Date();
for(var i = 0; i < 3000000; i++){
r = x[0];
}
document.write(new Date() - t);
document.writeln("
");
})();
(function(){
document.write("本地->本地:");
var r;
var x = window.x;
var t = new Date();
for(var i = 0; i < 3000000; i++){
r = x;
}
document.write(new Date() - t);
document.writeln("
");
})();
</script>
</body>
</html>
[Ctrl+A 全选 注:
如需引入外部Js需刷新才能执行]
注意:在IE中进行这个测试时需要先改变IE的"最大脚本步数":
[HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerStyles]
"MaxScriptStatements"=dword:ffffffff
这么看的话使用函数内的本地变量时效率要比用全局变量或者常量表达式高出许多。而属性的效率就糟得很恐怖了,在Firefox和Safari中居然比利用全局变量还慢上好多倍。
直接用字符串常量要比利用全局变量快,但创建正则表达式就比起用全局变量要慢上很多了。
观察数字还可以发现:在Google Chrome、Opera和IE中,用属性和利用全局变量相差不大(Opera的表现也许是其垃圾回收机制造成的),从这个现象上看的话,这三种浏览器中所谓的全局变量有可能根本就是全局对象的属性。
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- JS 倒计时实现代码(时、分,秒)
- js loading加载效果实现代码
- jquery.ui.draggable中文文档
- 利用JavaScript更改input中radio和checkbox样式
- JS 实现双色表格实现代码
- JavaScript 利用StringBuffer类提升+=拼接字符串效率
- asp.net下利用js实现返回上一页的实现方法小集
- javascript select控件间内容互相移动
- dropdownlist之间的互相联动实现(显示与隐藏)
- 根据鼠标的位置动态的控制层的位置
- js cookies实现简单统计访问次数
- js获取图片长和宽度的代码
- 写出更好的JavaScript程序之undefined篇(中)
- 通过身份证号得到出生日期和性别的js代码
- javascript 在网页中的运用(asp.net)
- javascript DOM编程实例(智播客学习)
- 传智播客学习之java 反射
- Javascript 刷新全集常用代码
- 写出更好的JavaScript之undefined篇(上)