/*
* -- SuperLU MT routine (version 1.0) --
* Univ. of California Berkeley, Xerox Palo Alto Research Center,
* and Lawrence Berkeley National Lab.
* August 15, 1997
*
* Purpose
* =======
* Returns the time in seconds used by the process.
*
* Note: the timer function call is machine dependent. Use conditional
* compilation to choose the appropriate function.
*
*/
#ifdef SUN
/*
* It uses the system call gethrtime(3C), which is accurate to
* nanoseconds.
*/
#include <sys/time.h>
double SuperLU_timer_() {
return ( (double)gethrtime() / 1e9 );
}
#else
double SuperLU_timer_()
{
double dclock();
return (dclock());
}
#endif
#include <sys/types.h>
#include <sys/times.h>
#include <time.h>
#include <sys/time.h>
#ifndef CLK_TCK
#define CLK_TCK 60
#endif
double usertimer_()
{
struct tms use;
double tmp;
times(&use);
tmp = use.tms_utime;
tmp += use.tms_stime;
return (double)(tmp) / CLK_TCK;
}
#if 0
/*
* It uses the system call gethrtime(3C), which is accurate to
* nanoseconds. This routine is MT-safe.
*
*/
#include <sys/time.h>
double timer_() {
return ( (double)gethrtime() / 1e9 );
}
#endif
#if 0
/* Get user, syste & wall-clock time */
#include <sys/time.h>
#include <sys/resource.h>
#include </usr/ucbinclude/sys/rusage.h>
double last_user_time = -1;
double last_system_time = -1;
double last_wall_time = -1;
void inittime()
{
struct timeval tp;
struct timezone tzp;
struct rusage use ;
gettimeofday(&tp,&tzp);
getrusage(RUSAGE_SELF, &use) ;
last_user_time = ((double) use.ru_utime.tv_sec
+ (double) use.ru_utime.tv_usec/1000000.) ;
last_system_time = ((double) use.ru_stime.tv_sec
+ (double) use.ru_stime.tv_usec/1000000. );
last_wall_time = tp.tv_sec + (double) tp.tv_usec / 1000000. ;
}
double gettimes(double *utime, double *stime, double *wtime)
{
struct rusage use ;
double user_time;
double system_time;
double wall_time;
struct timeval tp;
struct timezone tzp;
getrusage(RUSAGE_SELF, &use) ;
gettimeofday(&tp,&tzp);
user_time = ((double) use.ru_utime.tv_sec +
(double) use.ru_utime.tv_usec / 1000000.)
- last_user_time;
system_time = ((double) use.ru_stime.tv_sec +
(double) use.ru_stime.tv_usec / 1000000.)
- last_system_time;
wall_time = (double) tp.tv_sec + (double) tp.tv_usec / 1000000.
- last_wall_time;
last_user_time = last_system_time = last_wall_time = -1;
*utime = user_time;
*stime = system_time;
*wtime = wall_time;
return ;
}
#endif
syntax highlighted by Code2HTML, v. 0.9.1