⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timers_b.c

📁 Vxworks下可以使用的测试CPU DMIPS的标准源代码
💻 C
字号:
/*****************************************************//* Various timer routines.                           *//* Al Aburto, aburto@nosc.mil, 18 Feb 1997           *//*                                                   *//* t = dtime() outputs the current time in seconds.  *//* Use CAUTION as some of these routines will mess   *//* up when timing across the hour mark!!!            *//*                                                   *//* For timing I use the 'user' time whenever         *//* possible. Using 'user+sys' time is a separate     *//* issue.                                            *//*                                                   *//* Example Usage:                                    *//* [timer options added here]                        *//* main()                                            *//* {                                                 *//* double starttime,benchtime,dtime();               *//*                                                   *//* starttime = dtime();                              */ /* [routine to time]                                 *//* benchtime = dtime() - starttime;                  *//* }                                                 *//*                                                   *//* [timer code below added here]                     *//*****************************************************//***************************************************************//* Timer options. You MUST uncomment one of the options below  *//* or compile, for example, with the '-DUNIX' option.          *//***************************************************************//* #define Amiga       *//* #define UNIX        *//* #define UNIX_Old    *//* #define VMS         *//* #define BORLAND_C   *//* #define MSC         *//* #define MAC         *//* #define IPSC        *//* #define FORTRAN_SEC *//* #define GTODay      *//* #define CTimer      *//* #define UXPM        *//* #define MAC_TMgr    *//* #define PARIX       *//* #define POSIX       *//* #define WIN32       *//* #define POSIX1      *//***********************//*********************************//* Timer code.                   *//*********************************//*******************//*  Amiga dtime()  *//*******************/#ifdef Amiga#include <ctype.h>#define HZ 50double dtime(){ double q; struct tt       {	long  days;	long  minutes;	long  ticks;       } tt; DateStamp(&tt); q = ((double)(tt.ticks + (tt.minutes * 60L * 50L))) / (double)HZ; return q;}#endif/*****************************************************//*  UNIX dtime(). This is the preferred UNIX timer.  *//*  Provided by: Markku Kolkka, mk59200@cc.tut.fi    *//*  HP-UX Addition by: Bo Thide', bt@irfu.se         *//*****************************************************/#ifdef UNIX#include <sys/time.h>#include <sys/resource.h>#ifdef hpux#include <sys/syscall.h>#define getrusage(a,b) syscall(SYS_getrusage,a,b)#endifstruct rusage rusage;double dtime(){ double q; getrusage(RUSAGE_SELF,&rusage); q = (double)(rusage.ru_utime.tv_sec); q = q + (double)(rusage.ru_utime.tv_usec) * 1.0e-06;	 return q;}#endif/***************************************************//*  UNIX_Old dtime(). This is the old UNIX timer.  *//*  Make sure HZ is properly defined in param.h !! *//***************************************************/#ifdef UNIX_Old#include <sys/types.h>#include <sys/times.h>#include <sys/param.h>#ifndef HZ#define HZ 60#endifstruct tms tms;double dtime(){ double q; times(&tms); q = (double)(tms.tms_utime) / (double)HZ;	 return q;}#endif/*********************************************************//*  VMS dtime() for VMS systems.                         *//*  Provided by: RAMO@uvphys.phys.UVic.CA                *//*  Some people have run into problems with this timer.  *//*********************************************************/#ifdef VMS#include time#ifndef HZ#define HZ 100#endifstruct tbuffer_t      {       int proc_user_time;       int proc_system_time;       int child_user_time;       int child_system_time;      };struct tbuffer_t tms;double dtime(){ double q; times(&tms); q = (double)(tms.proc_user_time) / (double)HZ;	 return q;}#endif/******************************//*  BORLAND C dtime() for DOS *//******************************/#ifdef BORLAND_C#include <ctype.h>#include <dos.h>#include <time.h>#define HZ 100struct time tnow;double dtime(){ double q; gettime(&tnow); q = 60.0 * (double)(tnow.ti_min); q = q + (double)(tnow.ti_sec); q = q + (double)(tnow.ti_hund)/(double)HZ;	 return q;}#endif/**************************************//*  Microsoft C (MSC) dtime() for DOS *//**************************************/#ifdef MSC#include <time.h>#include <ctype.h>#define HZ CLOCKS_PER_SECclock_t tnow;double dtime(){ double q; tnow = clock(); q = (double)tnow / (double)HZ;	 return q;}#endif/*************************************//*  Macintosh (MAC) Think C dtime()  *//*************************************/#ifdef MAC#include <time.h>#define HZ 60double dtime(){ double q; q = (double)clock() / (double)HZ;	 return q;}#endif/************************************************************//*  iPSC/860 (IPSC) dtime() for i860.                       *//*  Provided by: Dan Yergeau, yergeau@gloworm.Stanford.EDU  *//************************************************************/#ifdef IPSCextern double dclock();double dtime(){ double q; q = dclock();	 return q;}#endif/**************************************************//*  FORTRAN dtime() for Cray type systems.        *//*  This is the preferred timer for Cray systems. *//**************************************************/#ifdef FORTRAN_SECfortran double second();double dtime(){ double q; second(&q);	 return q;}#endif/***********************************************************//*  UNICOS C dtime() for Cray UNICOS systems.  Don't use   *//*  unless absolutely necessary as returned time includes  *//*  'user+system' time.  Provided by: R. Mike Dority,      *//*  dority@craysea.cray.com                                *//***********************************************************/#ifdef CTimer#include <time.h>double dtime(){ double    q; clock_t   clock(void); q = (double)clock() / (double)CLOCKS_PER_SEC; return q;}#endif/********************************************//* Another UNIX timer using gettimeofday(). *//* However, getrusage() is preferred.       *//********************************************/#ifdef GTODay#include <sys/time.h>struct timeval tnow;double dtime(){ double q; gettimeofday(&tnow,NULL); q = (double)tnow.tv_sec + (double)tnow.tv_usec * 1.0e-6; return q;}#endif/*****************************************************//*  Fujitsu UXP/M timer.                             *//*  Provided by: Mathew Lim, ANUSF, M.Lim@anu.edu.au *//*****************************************************/#ifdef UXPM#include <sys/types.h>#include <sys/timesu.h>struct tmsu rusage;double dtime(){ double q; timesu(&rusage); q = (double)(rusage.tms_utime) * 1.0e-06;	 return q;}#endif/**********************************************//*    Macintosh (MAC_TMgr) Think C dtime()    *//*   requires Think C Language Extensions or  *//*    #include <MacHeaders> in the prefix     *//*  provided by Francis H Schiffer 3rd (fhs)  *//*         skipschiffer@genie.geis.com        *//**********************************************/#ifdef MAC_TMgr#include <Timer.h>#include <stdlib.h>static TMTask   mgrTimer;static Boolean  mgrInited = false;static double   mgrClock;#define RMV_TIMER RmvTime( (QElemPtr)&mgrTimer )#define MAX_TIME  1800000000L/* MAX_TIME limits time between calls to *//* dtime( ) to no more than 30 minutes   *//* this limitation could be removed by   *//* creating a completion routine to sum  *//* 30 minute segments (fhs 1994 feb 9)   */static void Remove_timer( ){ RMV_TIMER; mgrInited = false;}double  dtime( ){ if( mgrInited ) {   RMV_TIMER;   mgrClock += (MAX_TIME + mgrTimer.tmCount)*1.0e-6; } else {   if( _atexit( &Remove_timer ) == 0 ) mgrInited = true;   mgrClock = 0.0; }  if ( mgrInited )   {    mgrTimer.tmAddr = NULL;    mgrTimer.tmCount = 0;    mgrTimer.tmWakeUp = 0;    mgrTimer.tmReserved = 0;    InsTime( (QElemPtr)&mgrTimer );    PrimeTime( (QElemPtr)&mgrTimer, -MAX_TIME );   } return( mgrClock );}#endif/***********************************************************//*  Parsytec GCel timer.                                   *//*  Provided by: Georg Wambach, gw@informatik.uni-koeln.de *//***********************************************************/#ifdef PARIX#include <sys/time.h>double dtime(){ double q; q = (double) (TimeNowHigh()) / (double) CLK_TCK_HIGH; return q;}#endif/************************************************//*  Sun Solaris POSIX dtime() routine           *//*  Provided by: Case Larsen, CTLarsen.lbl.gov  *//************************************************/#ifdef POSIX#include <sys/time.h>#include <sys/resource.h>#include <sys/rusage.h>#ifdef __hpux#include <sys/syscall.h>#endifstruct rusage rusage;double dtime(){ double q; getrusage(RUSAGE_SELF,&rusage); q = (double)(rusage.ru_utime.tv_sec); q = q + (double)(rusage.ru_utime.tv_nsec) * 1.0e-09;	 return q;}#endif/****************************************************//*  Windows NT (32 bit) dtime() routine             *//*  Provided by: Piers Haken, piersh@microsoft.com  *//****************************************************/#ifdef WIN32#include <windows.h>double dtime(void){ double q; q = (double)GetTickCount() * 1.0e-03;	 return q;}#endif/*****************************************************//* Time according to POSIX.1  -  <J.Pelan@qub.ac.uk> *//* Ref: "POSIX Programmer's Guide"  O'Reilly & Assoc.*//*****************************************************/#ifdef POSIX1#define _POSIX_SOURCE 1#include <unistd.h>#include <limits.h>#include <sys/times.h>struct tms tms;double dtime(){ double q; times(&tms); q = (double)tms.tms_utime / (double)CLK_TCK; return q;}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -