version 1.9, 2015/08/08 14:19:41 |
version 1.11, 2018/03/29 01:32:50 |
|
|
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* |
* |
* $OpenXM: OpenXM_contrib2/asir2000/builtin/time.c,v 1.8 2011/05/11 06:03:53 ohara Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/builtin/time.c,v 1.10 2015/08/09 11:46:43 fujimoto Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "parse.h" |
#include "parse.h" |
Line 55 void Ptime(), Pcputime(), Pcurrenttime(), Ptstart(), P |
|
Line 55 void Ptime(), Pcputime(), Pcurrenttime(), Ptstart(), P |
|
void Pdcurrenttime(); |
void Pdcurrenttime(); |
|
|
struct ftab time_tab[] = { |
struct ftab time_tab[] = { |
{"time",Ptime,0}, |
{"time",Ptime,0}, |
{"cputime",Pcputime,1}, |
{"cputime",Pcputime,1}, |
{"currenttime",Pcurrenttime,0}, |
{"currenttime",Pcurrenttime,0}, |
{"dcurrenttime",Pdcurrenttime,0}, |
{"dcurrenttime",Pdcurrenttime,0}, |
{"tstart",Ptstart,0}, |
{"tstart",Ptstart,0}, |
{"tstop",Ptstop,0}, |
{"tstop",Ptstop,0}, |
{0,0,0}, |
{0,0,0}, |
}; |
}; |
|
|
static struct oEGT egt0; |
static struct oEGT egt0; |
Line 71 double get_rtime(), get_current_time(); |
|
Line 71 double get_rtime(), get_current_time(); |
|
void Pcurrenttime(rp) |
void Pcurrenttime(rp) |
Q *rp; |
Q *rp; |
{ |
{ |
int t; |
int t; |
|
|
t = (int)get_current_time(); STOQ(t,*rp); |
t = (int)get_current_time(); STOQ(t,*rp); |
} |
} |
|
|
void Pdcurrenttime(rp) |
void Pdcurrenttime(rp) |
Real *rp; |
Real *rp; |
{ |
{ |
double t; |
double t; |
|
|
t = get_current_time(); MKReal(t,*rp); |
t = get_current_time(); MKReal(t,*rp); |
} |
} |
|
|
void Ptstart(rp) |
void Ptstart(rp) |
pointer *rp; |
pointer *rp; |
{ |
{ |
get_eg(&egt0); r0 = get_rtime(); *rp = 0; |
get_eg(&egt0); r0 = get_rtime(); *rp = 0; |
} |
} |
|
|
void Ptstop(rp) |
void Ptstop(rp) |
pointer *rp; |
pointer *rp; |
{ |
{ |
struct oEGT egt1; |
struct oEGT egt1; |
|
|
get_eg(&egt1); printtime(&egt0,&egt1,get_rtime()-r0); *rp = 0; |
get_eg(&egt1); printtime(&egt0,&egt1,get_rtime()-r0); *rp = 0; |
} |
} |
|
|
int prtime; |
int prtime; |
Line 104 void Pcputime(arg,rp) |
|
Line 104 void Pcputime(arg,rp) |
|
NODE arg; |
NODE arg; |
pointer *rp; |
pointer *rp; |
{ |
{ |
prtime = ARG0(arg) ? 1 : 0; *rp = 0; |
prtime = ARG0(arg) ? 1 : 0; *rp = 0; |
} |
} |
|
|
void Ptime(listp) |
void Ptime(listp) |
LIST *listp; |
LIST *listp; |
{ |
{ |
struct oEGT eg; |
struct oEGT eg; |
Real re,rg,rr; |
Real re,rg,rr; |
NODE a,b,w,r; |
NODE a,b,w,r; |
Q words; |
Q words; |
size_t t; |
size_t t; |
unsigned int u,l; |
unsigned int u,l; |
N n; |
N n; |
double rtime; |
double rtime; |
double get_rtime(); |
double get_rtime(); |
|
|
rtime = get_rtime(); MKReal(rtime,rr); |
rtime = get_rtime(); MKReal(rtime,rr); |
t = get_allocwords(); |
t = get_allocwords(); |
if(sizeof(size_t)>sizeof(int)) { |
if(sizeof(size_t)>sizeof(int)) { |
u = t>>(sizeof(int)*CHAR_BIT); l = t&(~0); |
u = t>>(sizeof(int)*CHAR_BIT); l = t&(~0); |
if ( !u ) STOQ(l,words); |
if ( !u ) STOQ(l,words); |
else { |
else { |
n = NALLOC(2); PL(n)=2; BD(n)[0] = l; BD(n)[1] = u; |
n = NALLOC(2); PL(n)=2; BD(n)[0] = l; BD(n)[1] = u; |
NTOQ(n,1,words); |
NTOQ(n,1,words); |
} |
} |
}else { |
}else { |
STOQ(t,words); |
STOQ(t,words); |
} |
} |
get_eg(&eg); MKReal(eg.exectime,re); MKReal(eg.gctime,rg); |
get_eg(&eg); MKReal(eg.exectime,re); MKReal(eg.gctime,rg); |
MKNODE(r,rr,0); MKNODE(w,words,r); MKNODE(a,rg,w); MKNODE(b,re,a); |
MKNODE(r,rr,0); MKNODE(w,words,r); MKNODE(a,rg,w); MKNODE(b,re,a); |
MKLIST(*listp,b); |
MKLIST(*listp,b); |
} |
} |
|
|
void printtime(egt0,egt1,r) |
void printtime(egt0,egt1,r) |
struct oEGT *egt0,*egt1; |
struct oEGT *egt0,*egt1; |
double r; |
double r; |
{ |
{ |
double e,g; |
double e,g; |
|
|
e = egt1->exectime - egt0->exectime; |
e = egt1->exectime - egt0->exectime; |
if ( e < 0 ) e = 0; |
if ( e < 0 ) e = 0; |
g = egt1->gctime - egt0->gctime; |
g = egt1->gctime - egt0->gctime; |
if ( g < 0 ) g = 0; |
if ( g < 0 ) g = 0; |
if ( g ) |
if ( g ) |
fprintf(stderr,"%.4gsec + gc : %.4gsec(%.4gsec)\n",e,g,r); |
fprintf(stderr,"%.4gsec + gc : %.4gsec(%.4gsec)\n",e,g,r); |
else |
else |
fprintf(stderr,"%.4gsec(%.4gsec)\n",e,r); |
fprintf(stderr,"%.4gsec(%.4gsec)\n",e,r); |
#if defined(__MINGW32__) || defined(__MINGW64__) |
|
fflush(stderr); |
|
#endif |
|
} |
} |