diff options
Diffstat (limited to 'generic/perfos.c')
-rw-r--r-- | generic/perfos.c | 345 |
1 files changed, 0 insertions, 345 deletions
diff --git a/generic/perfos.c b/generic/perfos.c deleted file mode 100644 index 77d19a4..0000000 --- a/generic/perfos.c +++ /dev/null @@ -1,345 +0,0 @@ -/* - * perfos.c -- Perfos modules. - * - * Authors : Patrick Lecoanet. - * Creation date : - * - * $Id$ - */ - -/* - * Copyright (c) 1993 - 2005 CENA, Patrick Lecoanet -- - * - * See the file "Copyright" for information on usage and redistribution - * of this file, and for a DISCLAIMER OF ALL WARRANTIES. - * - */ - -#ifndef _WIN32 - -#include "perfos.h" -#include "List.h" -#include "Types.h" - -#include <X11/Xutil.h> - - -static const char rcsid[] = "$Id$"; -static const char compile_id[]="$Compile: " __FILE__ " " __DATE__ " " __TIME__ " $"; - - -static ZnList Chronos = NULL; - - -/* - ********************************************************************************** - * - * HardwareSynchronize - Synchronise Xwindow. - * - ********************************************************************************** - */ -static void -HardwareSynchronize(Display *test_display, - Drawable test_window) -{ - /*XImage *image;*/ - - /* Synchronize yourself with the drawing engine by sending a - XGetImage one pixel square. */ - /* - image = XGetImage(test_display, test_window, 0, 0, 1, 1, ~0, ZPixmap); - XDestroyImage(image); - */ -} - - -/* - ********************************************************************************** - * - * GetUCTime - Return machine time. This is the sum of user and system - * times for the process so far. - * - ********************************************************************************** - */ -static long -GetUCTime(void) -{ - struct tms time; - - times(&time); - return time.tms_utime + time.tms_stime; -} - - -/* - ********************************************************************************** - * - * GetCurrentTime - Return current time. - * - ********************************************************************************** - */ -static long -GetCurrentTime(void) -{ - struct timeval start; - - gettimeofday(&start, NULL); - return((start.tv_sec * 100) + (start.tv_usec / 10000)); -} - - -/* - ********************************************************************************** - * - * XGetCurrentTime - return current time after Xwindow synchronize. - * - ********************************************************************************** - */ -static long -XGetCurrentTime(Display *display, Drawable window) -{ - HardwareSynchronize(display, window); - return(GetCurrentTime()); -} - - -/* - ********************************************************************************** - * - * XCorrectionValue - Evaluate the correction value to apply - * to counter the client-server round trip - * time. - * - ********************************************************************************** - */ -static long -XCorrectionValue(Display *display, Drawable window) -{ - int i; - long start, stop; - - start = GetCurrentTime(); - for (i = 0; i < 5; i++) { - HardwareSynchronize(display, window); - } - stop = GetCurrentTime(); - return((stop - start) / 5); -} - -/* - ********************************************************************************** - * - * ZnXStartChrono - Start a perf chrono with X synchronize. - * - ********************************************************************************** - */ -void -ZnXStartChrono(ZnChrono chrono, Display *display, Drawable window) -{ - chrono->current_correction = XCorrectionValue(display, window); - chrono->current_delay = XGetCurrentTime(display, window); -} - - -/* - ********************************************************************************** - * - * ZnXStopChrono - Stop a perf chrono with X synchronize. - * - ********************************************************************************** - */ -void -ZnXStopChrono(ZnChrono chrono, Display *display, Drawable window) -{ - chrono->total_delay = chrono->total_delay + - (XGetCurrentTime(display, window) - - chrono->current_delay - chrono->current_correction); - chrono->actions++; -} - - -/* - ********************************************************************************** - * - * ZnStartChrono - Start a perf chrono in user time. - * - ********************************************************************************** - */ -void -ZnStartChrono(ZnChrono chrono) -{ - chrono->current_delay = GetCurrentTime(); -} - - -/* - ********************************************************************************** - * - * ZnStopChrono - Stop a perf chrono in user time. - * - ********************************************************************************** - */ -void -ZnStopChrono(ZnChrono chrono) -{ - chrono->total_delay = chrono->total_delay + (GetCurrentTime() - chrono->current_delay); - chrono->actions++; -} - - -/* - ********************************************************************************** - * - * ZnStartUCChrono - Start a perf chrono in uc time. - * - ********************************************************************************** - */ -void -ZnStartUCChrono(ZnChrono chrono) -{ - chrono->current_delay = GetUCTime(); -} - - -/* - ********************************************************************************** - * - * ZnStopUCChrono - Stop a perf chrono in uc time. - * - ********************************************************************************** - */ -void -ZnStopUCChrono(ZnChrono chrono) -{ - chrono->total_delay = chrono->total_delay + (GetUCTime() - chrono->current_delay); - chrono->actions++; -} - - -/* - ********************************************************************************** - * - * ZnPrintChronos - Print the currently available stats on all - * chronos registered so far. - * - ********************************************************************************** - */ -void -ZnPrintChronos(void) -{ - int i, cnt; - ZnChrono *chrs; - - cnt = ZnListSize(Chronos); - chrs = (ZnChrono *) ZnListArray(Chronos); - for (i = 0; i < cnt; i++) { - if (chrs[i]->actions != 0) { - printf("%s : %ld ms on %d times\n", - chrs[i]->message, - chrs[i]->total_delay * 10 / chrs[i]->actions, - chrs[i]->actions); - } - } -} - - -/* - ********************************************************************************** - * - * ZnGetChrono - Return the number of runs and the total time of the Chrono. - * - ********************************************************************************** - */ -void -ZnGetChrono(ZnChrono chrono, - long *time, - int *actions) -{ - if (time) { - *time = chrono->total_delay*10; - } - if (actions) { - *actions = chrono->actions; - } -} - - -/* - ********************************************************************************** - * - * ZnResetChronos - Reset all chronos or only the specified. - * - ********************************************************************************** - */ -void -ZnResetChronos(ZnChrono chrono) -{ - int i, cnt; - ZnChrono *chrs; - - if (chrono) { - chrono->actions = 0; - chrono->total_delay = 0; - } - else { - cnt = ZnListSize(Chronos); - chrs = (ZnChrono *) ZnListArray(Chronos); - for (i = 0; i < cnt; i++) { - chrs[i]->actions = 0; - chrs[i]->total_delay = 0; - } - } -} - - -/* - ********************************************************************************** - * - * ZnNewChrono - Return a new initialized chrono associated with - * message. - * - ********************************************************************************** - */ -ZnChrono -ZnNewChrono(char *message) -{ - ZnChrono new; - - if (!Chronos) { - Chronos = ZnListNew(8, sizeof(ZnChrono)); - } - - new = (ZnChrono) ZnMalloc(sizeof(ZnChronoRec)); - new->actions = 0; - new->total_delay = 0; - new->message = message; - - ZnListAdd(Chronos, &new, ZnListTail); - - return new; -} - -/* - ********************************************************************************** - * - * ZnFreeChrono - Free the resources of a chrono. - * - ********************************************************************************** - */ -void -ZnFreeChrono(ZnChrono chrono) -{ - int i; - ZnChrono *chrs = ZnListArray(Chronos); - - ZnFree(chrono); - - for (i = ZnListSize(Chronos)-1; i >= 0; i--) { - if (chrs[i] == chrono) { - ZnListDelete(Chronos, i); - break; - } - } -} - -#endif /* _WIN32 */ |