diff options
author | Guido van Rossum <guido@python.org> | 1994-01-02 23:22:21 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1994-01-02 23:22:21 (GMT) |
commit | 116857ca01797bc89894862db8ebe0967ec7df47 (patch) | |
tree | fa0d65b1395c05d0ec82ccc097658e6fc4dd7150 /Modules | |
parent | a1c996c9d6bdbd014c7899a32acc00416cc312fd (diff) | |
download | cpython-116857ca01797bc89894862db8ebe0967ec7df47.zip cpython-116857ca01797bc89894862db8ebe0967ec7df47.tar.gz cpython-116857ca01797bc89894862db8ebe0967ec7df47.tar.bz2 |
Added George Neville-Neil's timing module
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/timing.h | 87 | ||||
-rw-r--r-- | Modules/timingmodule.c | 109 |
2 files changed, 196 insertions, 0 deletions
diff --git a/Modules/timing.h b/Modules/timing.h new file mode 100644 index 0000000..aef6457 --- /dev/null +++ b/Modules/timing.h @@ -0,0 +1,87 @@ +/* + * Copyright (c) 1993 George V. Neville-Neil + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by George V. Neville-Neil + * 4. The name, George Neville-Neil may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * + * File: $Id$ + * + * Author: George V. Neville-Neil + * + * Update History: $Log$ + * Update History: Revision 2.1 1994/01/02 23:22:19 guido + * Update History: Added George Neville-Neil's timing module + * Update History: + * Revision 1.1 93/12/28 13:14:19 gnn + * Initial revision + * + * Revision 1.1 93/12/23 18:59:10 gnn + * Initial revision + * + * Revision 1.3 93/07/22 15:57:39 15:57:39 gnn (George Neville-Neil) + * Added copyright message. + * + * Revision 1.2 1993/07/22 12:12:34 gnn + * Latest macros. They now evaluate to rvalues. + * + * Revision 1.1 93/07/19 16:56:18 16:56:18 gnn (George Neville-Neil) + * Initial revision + * + * + * + */ + +#ifndef _TIMING_H_ +#define _TIMING_H_ + +#include <sys/time.h> + +static struct timeval aftertp, beforetp; + +#define BEGINTIMING gettimeofday(&beforetp, NULL) + +#define ENDTIMING gettimeofday(&aftertp, NULL); \ + if(beforetp.tv_usec > aftertp.tv_usec) \ + { \ + aftertp.tv_usec += 1000000; \ + aftertp.tv_sec--; \ + } + +#define TIMINGUS (((aftertp.tv_sec - beforetp.tv_sec) * 1000000) + \ + (aftertp.tv_usec - beforetp.tv_usec)) + +#define TIMINGMS (((aftertp.tv_sec - beforetp.tv_sec) * 1000) + \ + ((aftertp.tv_usec - beforetp.tv_usec) / 1000)) + +#define TIMINGS ((aftertp.tv_sec - beforetp.tv_sec) + \ + (aftertp.tv_usec - beforetp.tv_usec) / 1000000) + +#endif /* _TIMING_H_ */ diff --git a/Modules/timingmodule.c b/Modules/timingmodule.c new file mode 100644 index 0000000..fcfa8f7 --- /dev/null +++ b/Modules/timingmodule.c @@ -0,0 +1,109 @@ +/* + * + * File: $Id$ + * + * Author: George V. Neville-Neil + * + * Update History: $Log$ + * Update History: Revision 2.1 1994/01/02 23:22:21 guido + * Update History: Added George Neville-Neil's timing module + * Update History: + * Revision 1.1 93/12/28 13:14:39 gnn + * Initial revision + * + * + * + * + */ + +#ifndef lint +static char rcsid [] = "$Header$" ; +#endif + +#include "allobjects.h" +#include "import.h" +#include "modsupport.h" +#include "ceval.h" + +/* Our stuff... */ +#include "timing.h" + +static object * +start_timing(self, args) + object *self; + object *args; +{ + if (!getargs(args, "")) + return NULL; + + INCREF(None); + BEGINTIMING; + return None; +} + +static object * +finish_timing(self, args) + object *self; + object *args; +{ + if (!getargs(args, "")) + return NULL; + + ENDTIMING + INCREF(None); + return None; +} + +static object * +seconds(self, args) + object *self; + object *args; +{ + if (!getargs(args, "")) + return NULL; + + return newintobject(TIMINGS); + +} + +static object * +milli(self, args) + object *self; + object *args; +{ + if (!getargs(args, "")) + return NULL; + + return newintobject(TIMINGMS); + +} +static object * +micro(self, args) + object *self; + object *args; +{ + if (!getargs(args, "")) + return NULL; + + return newintobject(TIMINGUS); + +} + + +static struct methodlist timing_methods[] = { + {"start", start_timing}, + {"finish", finish_timing}, + {"seconds", seconds}, + {"milli", milli}, + {"micro", micro}, + {NULL, NULL} +}; + + +void inittiming() +{ + object *m; + + m = initmodule("timing", timing_methods); + +} |