西红柿爱番茄

Feed Rss

简单易用的测试代码执行时间对象—Watch

01.24.2010, Javascript, by .

Updates:2010-6-4

今天看到Wait也写了个时间测试代码程序,就回过头来看看自己曾经写的Watch对象代码,代码看起来有些丑陋了。修改了report方法,整合了下代码,使其简洁许多,去掉了一些不必要的创建DOM元素的操作,给report方法添加了个参数,用于确认把测试结果内容插入到哪个DOM元素里,默认是document.body,其他都没怎么修改。同时,这次修改也修改了一个小bug,就是在调用了report方法之后,没有清除原来的时间和结果内容。这样在页面中同时调用了几个report的时候,结果数据累加了。

最新版本:Watch_1_4.js

=====================================================================

近段时间,由于需要测试很多代码的执行时间比较,测试代码需要重复编写,感觉很繁琐和机械化,所以就干脆封装了一个测试代码执行时间的对象—Watch。

Watch对象提供了start、stop、report、fns、execByTimes五个方法。顾名思义,start和stop是储存代码开始执行和结束时的时间,report方法用于显示测试结果。其他两个方法接下来会介绍,也都是非常简单的,目的都是用于简化测试代码的重复性编写,并且它可以很简单的嵌入到其他代码中。在使用Watch对象的时候需要引入Watch.js文件:<script type=”text/javascript” src=”Watch.js”></script>

一个简单的示例如下:
[javascript]
Watch.start("Cost times:");
for(var i=0;i<10000;i++){
document.createElement("iframe");
}
Watch.stop();

onload=function(){
//这句需要在onload事件中执行,因为需要插入DOM元素到document.body里。
Watch.report();
}
[/javascript]

上面的示例的输出包括总时间,以及使用类似于进度条的形式来展示执行时间。《其他测试示例》、《TestLoop

关于fns方法,它用于执行参数内的全部函数,并记录每个函数的执行时间。
[javascript]
Watch.fns(function(){
document.createElement("iframe");
},function(){
document.createElement("div");
}…….
}
[/javascript]
execByTimes方法的功能跟fns类似,但是需要提供一个函数、一个时间执行次数times以及一个可选的参数title。如果你已经对重复编写for循环来执行某个函数或者一段用匿名函数封装的代码,这个方法将给你提供这方面的便利。
[javascript]
Watch.execByTimes(function(){
document.createElement("iframe");
},10000,"Create iframe Element");
[/javascript]

上面讲述了Watch五个方法的使用方式,我是从中感受到了便利的。^_^

下载Watch对象源码文件》或者《直接查看源码

////////////////////////// 2010-01-28 updates////////////////////////////

由于考虑到在使用Watch测试的过程中,需要在页面上打印一些说明性的信息,所以Watch对象增加了print的方法,示例可以浏览这个页面:《测试页面》。

同时,Watch对象也修改了部分功能,最新修改版本:Watch_1_1.js

////////////////////////// 2010-01-29 updates////////////////////////////

这次修正了fns方法之前没有设置title的参数,所以重写了fns的实现方式:
[javascript]
fns: function(){
var a = arguments;
for (var i = 0, l = a.length; i < l; i++) {
this.start(a[i][0]);
a[i][1]();
this.stop();
}
}
[/javascript]
fns方法内的参数不再是每一个函数,而是一个个数组,数组里第一个是title,第二个是函数,示例如下:
[javascript]
Watch.fns(["Normal",function(){
......
}],["Special",function(){
......
}]);
[/javascript]
最新修改版本:Watch_1_2.js

////////////////////////// 2010-01-30 updates////////////////////////////

这次修正了当循环次数少的时候在IE下抛出“参数错误”的异常,同时加入了如果Javascript代码执行时间超过10s,就弹出提示框。虽然IE,FF,Google Chrome,Safari有内置了这个功能,可是Opera却没有。

最新修改版本:Watch_1_3.js

简单易用的测试代码执行时间对象—Watch 有 7 条回应

  1. 如果循环的次数很少譬如等于10的话,就会抛异常。

  2. 2010-01-30 在 15:51 Supersha

    确实,没有处理好除数为0的情况,现在已经更正,thx.dajian

  3. guoerwuhen !

  4. 博主是个很用心打理网站的哦…我就不行了…称赞下~祝愿贵博人气翻番!

  5. 新年快乐啊^_^

  6. 很低调的拜个晚年啊~~^_^

  7. Thank you for the article!

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>