home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / win95 / sieciowe / hotja32.lzh / hotjava / classsrc / net / www / httpd / timingtrace.java < prev    next >
Text File  |  1995-08-11  |  2KB  |  84 lines

  1. /*
  2.  * @(#)TimingTrace.java    1.1 95/04/03
  3.  * 
  4.  * Copyright (c) 1995 Sun Microsystems, Inc.  All Rights reserved Permission to
  5.  * use, copy, modify, and distribute this software and its documentation for
  6.  * NON-COMMERCIAL purposes and without fee is hereby granted provided that
  7.  * this copyright notice appears in all copies. Please refer to the file
  8.  * copyright.html for further important copyright and licensing information.
  9.  * 
  10.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
  11.  * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  12.  * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
  13.  * OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY
  14.  * LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR
  15.  * ITS DERIVATIVES.
  16.  */
  17.  
  18. package net.www.httpd;
  19. import java.io.*;
  20.  
  21. /**
  22.  * A class to maintain a trace of timing information through
  23.  * an execution path.
  24.  * @author  James Gosling
  25.  */
  26.  
  27. public class TimingTrace {
  28.     private int times[];
  29.     private String terms[];
  30.     private int t0;
  31.     private int ntimes;
  32.     String title;
  33.  
  34.     public TimingTrace (String t, int size) {
  35.     times = new int[size];
  36.     terms = new String[size];
  37.     title = t;
  38.     reset();
  39.     }
  40.  
  41.     public void reset() {
  42.     t0 = System.nowMillis();
  43.     ntimes = 0;
  44.     }
  45.  
  46.     public void stamp(String s) {
  47.     int n = ntimes;
  48.     if (n < terms.length) {
  49.         times[n] = System.nowMillis();
  50.         terms[n] = s;
  51.         ntimes = n + 1;
  52.     }
  53.     }
  54.  
  55.     static private void po(PrintStream s, int n, int width) {
  56.     if (n <= 0) {
  57.         while (--width >= 0)
  58.         s.write(' ');
  59.     } else {
  60.         po(s, n / 10, width - 1);
  61.         s.write('0' + n % 10);
  62.     }
  63.     }
  64.     static synchronized void print(PrintStream s, TimingTrace t) {
  65.     int lt = t.t0;
  66.     s.print("\nTiming title: " + t.title + "\n");
  67.     for (int i = 0; i < t.ntimes; i++) {
  68.         int T = t.times[i];
  69.         po(s, T - lt, 6);
  70.         po(s, T - t.t0, 6);
  71.         s.print("  ");
  72.         lt = T;
  73.         s.print(t.terms[i]);
  74.         s.print("\n");
  75.     }
  76.     }
  77.     public void print() {
  78.     print(System.out);
  79.     }
  80.     public void print(PrintStream s) {
  81.     print(s, this);
  82.     }
  83. }
  84.