Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   Related Pages  

timing.h

00001 /*
00002  * Copyright 2003 Michael A. Marsh, Cornell University. All rights reserved.
00003  * This software is released under the modified BSD license.
00004  * See the file LICENSE in the top-level directory for details.
00005  */
00006 //
00007 // $Id: timing.h,v 1.4 2004/05/19 15:56:20 mmarsh Exp $
00008 //
00009 // $Log: timing.h,v $
00010 // Revision 1.4  2004/05/19 15:56:20  mmarsh
00011 // Added copyright and license statements.
00012 //
00013 // Revision 1.3  2003/11/04 22:31:38  mmarsh
00014 // Added CVS headers.  Now modification times and change logs will appear.
00015 //
00016 //
00017 
00018 #ifndef __CODEX_TIMING_H__
00019 #define __CODEX_TIMING_H__
00020 
00021 #ifdef TIMING
00022 #  ifndef TIMING_IMPL
00023 #    define TIME_EXT extern
00024 #  else
00025 #    define TIME_EXT 
00026 #  endif
00027 
00028 #include <sys/time.h>
00029 #include <string>
00030 #include <map>
00031 #include <vector>
00032 #include <iosfwd>
00033 class Timer
00034 {
00035    public :
00036       Timer( const std::string& tag ) : m_tag( tag )
00037       {}
00038 
00039       Timer( const char* tag ) : m_tag( tag )
00040       {}
00041 
00042       void clear() { m_timings.clear(); }
00043 
00044       void print( std::ostream& s ) const;
00045 
00046       void start();
00047       void stop();
00048       void cancel();
00049 
00050    private :
00051       typedef std::pair< struct timeval, struct timeval >  Pair;
00052       typedef std::vector< Pair >                          Vector;
00053 
00054       Vector       m_timings;
00055       std::string  m_tag;
00056 };
00057 
00058 #ifdef TIMING_IMPL
00059 Timer OneWayTimer("oneway");
00060 Timer APSSTimer[2] = {"apss0","apss1"};
00061 Timer InitTimer[2] = {"init0","init1"};
00062 Timer InitActTimer[2] = {"initact0","initact1"};
00063 Timer ComputeTimer[2] = {"compute0","compute1"};
00064 Timer SSLTimer("ssl");
00065 Timer SignTimer("sign");
00066 Timer SignVerifyTimer("signverify");
00067 Timer InitIdleTimer[2] = {"initidle0","initidle1"};
00068 Timer InitActIdleTimer[2] = {"initactidle0","initactidle1"};
00069 Timer ComputeIdleTimer[2] = {"computeidle0","computeidle1"};
00070 Timer ActiveTimer("active");
00071 
00072 Timer PartialSigTimer("partialsig");
00073 Timer PartialDecTimer("partialdec");
00074 Timer ThresholdSigTimer("threshsig");
00075 Timer ThresholdDecTimer("threshdec");
00076 Timer LookupTimer("lookup");
00077 Timer SchnorrTimer("schnorr");
00078 Timer DLProofTimer("dlproof");
00079 Timer DLProofVerifyTimer("dlproofverify");
00080 Timer RSAPPKTimer("rsappk");
00081 Timer PartialRSADecTimer("partialrsadec");
00082 #else
00083 extern Timer OneWayTimer;
00084 extern Timer APSSTimer[2];
00085 extern Timer InitTimer[2];
00086 extern Timer InitActTimer[2];
00087 extern Timer ComputeTimer[2];
00088 extern Timer SSLTimer;
00089 extern Timer SignTimer;
00090 extern Timer SignVerifyTimer;
00091 extern Timer InitIdleTimer[2];
00092 extern Timer InitActIdleTimer[2];
00093 extern Timer ComputeIdleTimer[2];
00094 extern Timer ActiveTimer;
00095 
00096 extern Timer PartialSigTimer;
00097 extern Timer PartialDecTimer;
00098 extern Timer ThresholdSigTimer;
00099 extern Timer ThresholdDecTimer;
00100 extern Timer LookupTimer;
00101 extern Timer SchnorrTimer;
00102 extern Timer DLProofTimer;
00103 extern Timer DLProofVerifyTimer;
00104 extern Timer RSAPPKTimer;
00105 extern Timer PartialRSADecTimer;
00106 #endif
00107 
00108 #endif /* TIMING */
00109 
00110 #endif /* __CODEX_TIMING_H__ */

Generated on Wed Jun 2 16:32:56 2004 for COrnell Data EXchange (CODEX) by doxygen1.2.18