//作者:sonymusic
//原载于豆腐技术站(www.ASP888.net)
package sony.utils;
import java.util.*;
import javax.servlet.JSP.*;
/**
* 一个计时类。
* 创建日期:(2000-11-6 13:09:38)
* 作者:SonyMusic(sonymusic@china.com)
*/
public class Timing{
private ArrayList nameArray=new ArrayList();
private ArrayList timeArray=new ArrayList();
private javax.servlet.JSP.JSPWriter out;
private boolean inJSP=false;
/**
* 这个构造器是在JAVA中用的。
*/
public Timing() {
super();
this.inJSP=false;
}
/**
* Timing 构造,这个构造 器是在JSP中用的。
*/
public Timing(javax.servlet.JSP.PageContext pageContext) {
super();
this.out=pageContext.getOut();
this.inJSP=true;
}
/**
* 此处插入方法说明。
* 创建日期:(2000-11-6 13:40:36)
* @param name java.lang.String
*/
public void add(String name) {
if(name==null || name.length()==0) name="Default";
//if(name.length()>7) name=name.substring(0,7);
nameArray.add(name);
timeArray.add(Calendar.getInstance());
}
/**
* 这里是在JAVA中用法。
* 创建日期:(2000-11-6 14:39:43)
* @param args java.lang.String[]
*/
public static void main(String[] args) {
Timing time=new Timing();
time.add("Start");
Random ran=new Random();
int i=0,j=0;
for(i=0;i<10000000;i++)
j+=ran.nextInt();
time.add("After 100");
for(i=0;i<100000;i++)
j+=ran.nextInt();
time.add("After 100000");
for(i=0;i<100000;i++)
j+=ran.nextInt();
time.add("After 100000");
time.show();
}
/**
* 此处插入方法说明。
* 创建日期:(2000-11-6 13:43:24)
*/
public void show() {
if(inJSP)
showInJSP();
else
showInJava();
}
/**
* 此处插入方法说明。
* 创建日期:(2000-11-6 13:46:06)
*/
private void showInJava() {
if(nameArray.isEmpty()){
System.out.println("尚未增加计时点!");
return;
}
Calendar oldCal=null,cal=null,firstCal;
//=Calendar.getInstance()
String name;
firstCal=(Calendar)timeArray.get(0);
System.out.println("序号\t\t名称\t\t\t\t时间\t\t\t\t耗时(秒)");
for(int i=0;i name=(String)nameArray.get(i); cal=(Calendar)timeArray.get(i); System.out.print(i+1); System.out.print("\t\t\t"); System.out.print(name+"\t\t\t\t"); System.out.print(cal.get(Calendar.HOUR_OF_DAY)+":"+cal.get(Calendar.MINUTE)+":"+cal.get(Calendar.SECOND)+"."+cal.get(Calendar.MILLISECOND)); System.out.print("\t\t\t\t"); if(oldCal==null){ System.out.println("无"); } else{ long diffTime=cal.getTime().getTime()-oldCal.getTime().getTime(); System.out.println((double)diffTime/1000); } oldCal=cal; } System.out.println(""); if(nameArray.size()==1){ System.out.println("只增加了一个计时点,无法统计时间!"); } else{ long diffTime=oldCal.getTime().getTime()-firstCal.getTime().getTime(); System.out.println("总计耗时: "+(double)diffTime/1000+" 秒"); } } /** * 此处插入方法说明。 * 创建日期:(2000-11-6 13:57:56) */ private void showInJSP() { try { if (nameArray.isEmpty()) { return; } Calendar oldCal = null, cal = null, firstCal; String name; long diffTime; firstCal = (Calendar) timeArray.get(0); System.out.println("序号\t\t名称\t\t\t\t时间\t\t\t\t耗时(秒)"); String str = ""; str += " str += " for (int i = 0; i < nameArray.size(); i++) { str += " name = (String) nameArray.get(i); cal = (Calendar) timeArray.get(i); str += " str += i + 1; str += " str += " str += " + cal.get(Calendar.HOUR_OF_DAY) + ":" + cal.get(Calendar.MINUTE) + ":" + cal.get(Calendar.SECOND) + "." + cal.get(Calendar.MILLISECOND) + " if (oldCal == null) { //System.out.println("无"); str += " } else { diffTime = cal.getTime().getTime() - oldCal.getTime().getTime(); str += " } oldCal = cal; str += " } str += " if (nameArray.size() == 1) { str += "只增加了一个计时点,无法统计时间!"; } else { diffTime = oldCal.getTime().getTime() - firstCal.getTime().getTime(); str += "总计耗时: " + (double) diffTime / 1000 + " 秒"; } str += " str += "";
"; ";
序号 名称 时间 耗时(秒) ";
";
";
";
" + name + " ";
"
";
无 ";
" + (double) diffTime / 1000 + " ";
";
";
out.println(str);
} catch (java.io.IOException e) {
}
}
}
以下是在JSP中的用法
<%@ page contentType="text/HTML;charset=gb2312"%>
<%@ page import="sony.utils.*,java.util.*"%>
<%
Timing time=new Timing(pageContext);
time.add("Start");
Random ran=new Random();
int i=0,j=0;
for(i=0;i<1000000;i++)
j+=ran.nextInt();
time.add("After 100");
for(i=0;i<100000;i++)
j+=ran.nextInt();
time.add("After 100000");
for(i=0;i<100000;i++)
j+=ran.nextInt();
time.add("After 100000");
time.show();
%>

