这里有新鲜出炉的 Javascript 教程,程序狗速度看过来!
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
直接用字符串常量要比利用全局变量快,但创建正则表达式就比起用全局变量要慢上很多了。
[Ctrl+A 全选 注:
- <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>
如需引入外部 Js 需刷新才能执行
]注意:在 IE 中进行这个测试时需要先改变 IE 的 "最大脚本步数": [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Styles] "MaxScriptStatements"=dword:ffffffff 这么看的话使用函数内的本地变量时效率要比用全局变量或者常量表达式高出许多。而属性的效率就糟得很恐怖了,在 Firefox 和 Safari 中居然比利用全局变量还慢上好多倍。 直接用字符串常量要比利用全局变量快,但创建正则表达式就比起用全局变量要慢上很多了。 观察数字还可以发现:在 Google Chrome、Opera 和 IE 中,用属性和利用全局变量相差不大(Opera 的表现也许是其垃圾回收机制造成的),从这个现象上看的话,这三种浏览器中所谓的全局变量有可能根本就是全局对象的属性。
来源: http://www.phperz.com/article/17/0429/286199.html