//作者: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<namearray.size();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 += "<table width=\"400\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">";
str += "<tr><td>序号</td><td>名称</td><td>时间</td><td>耗时(秒)</td></tr>";
for (int i = 0; i < namearray.size(); i++) {
str += "<tr>";
name = (string) namearray.get(i);
cal = (calendar) timearray.get(i);
str += "<td>";
str += i + 1;
str += "</td>";
str += "<td>" + name + "</td>";
str += "<td>"
+ cal.get(calendar.hour_of_day)
+ ":"
+ cal.get(calendar.minute)
+ ":"
+ cal.get(calendar.second)
+ "."
+ cal.get(calendar.millisecond)
+ "</td>";
if (oldcal == null) {
//system.out.println("无");
str += "<td>无</td>";
} else {
difftime = cal.gettime().gettime() – oldcal.gettime().gettime();
str += "<td>" + (double) difftime / 1000 + "</td>";
}
oldcal = cal;
str += "</tr>";
}
str += "<tr><td colspan=\"4\">";
if (namearray.size() == 1) {
str += "只增加了一个计时点,无法统计时间!";
} else {
difftime = oldcal.gettime().gettime() – firstcal.gettime().gettime();
str += "总计耗时: " + (double) difftime / 1000 + " 秒";
}
str += " </td></tr>";
str += "</table>";
out.println(str);
} catch (java.io.ioexception e) {
}
}
}
以下是在jsp中的用法
<%@ page contenttype="text/html;charset=gb2312"%>
<%@ page import="sony.utils.*,java.util.*"%>
<html>
<head>
<title>untitled</title>
</head>
<body>
<%
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();
%>
</body>
</html>
