[BACK]Return to time.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / builtin

Annotation of OpenXM_contrib2/asir2000/builtin/time.c, Revision 1.1.1.1

1.1       noro        1: /* $OpenXM: OpenXM/src/asir99/builtin/time.c,v 1.1.1.1 1999/11/10 08:12:26 noro Exp $ */
                      2: #include "ca.h"
                      3: #include "parse.h"
                      4:
                      5: void Ptime(), Pcputime(), Pcurrenttime(), Ptstart(), Ptstop();
                      6:
                      7: struct ftab time_tab[] = {
                      8:        {"time",Ptime,0},
                      9:        {"cputime",Pcputime,1},
                     10:        {"currenttime",Pcurrenttime,0},
                     11:        {"tstart",Ptstart,0},
                     12:        {"tstop",Ptstop,0},
                     13:        {0,0,0},
                     14: };
                     15:
                     16: static struct oEGT egt0;
                     17: static double r0;
                     18: double get_rtime(), get_current_time();
                     19:
                     20: void Pcurrenttime(rp)
                     21: Q *rp;
                     22: {
                     23:        int t;
                     24:
                     25:        t = (int)get_current_time(); STOQ(t,*rp);
                     26: }
                     27:
                     28: void Ptstart(rp)
                     29: pointer *rp;
                     30: {
                     31:        get_eg(&egt0); r0 = get_rtime(); *rp = 0;
                     32: }
                     33:
                     34: void Ptstop(rp)
                     35: pointer *rp;
                     36: {
                     37:        struct oEGT egt1;
                     38:
                     39:        get_eg(&egt1); printtime(&egt0,&egt1,get_rtime()-r0); *rp = 0;
                     40: }
                     41:
                     42: int prtime;
                     43:
                     44: void Pcputime(arg,rp)
                     45: NODE arg;
                     46: pointer *rp;
                     47: {
                     48:        prtime = ARG0(arg) ? 1 : 0; *rp = 0;
                     49: }
                     50:
                     51: void Ptime(listp)
                     52: LIST *listp;
                     53: {
                     54:        struct oEGT eg;
                     55:        Real re,rg,rr;
                     56:        NODE a,b,w,r;
                     57:        Q words;
                     58:        int t;
                     59:        double rtime;
                     60:        double get_rtime();
                     61:
                     62:        rtime = get_rtime(); MKReal(rtime,rr);
                     63:        t = get_allocwords(); STOQ(t,words);
                     64:        get_eg(&eg); MKReal(eg.exectime,re); MKReal(eg.gctime,rg);
                     65:        MKNODE(r,rr,0); MKNODE(w,words,r); MKNODE(a,rg,w); MKNODE(b,re,a);
                     66:        MKLIST(*listp,b);
                     67: }
                     68:
                     69: void printtime(egt0,egt1,r)
                     70: struct oEGT *egt0,*egt1;
                     71: double r;
                     72: {
                     73:        double e,g;
                     74:
                     75:        e = egt1->exectime - egt0->exectime;
                     76:        if ( e < 0 ) e = 0;
                     77:        g = egt1->gctime - egt0->gctime;
                     78:        if ( g < 0 ) g = 0;
                     79:        if ( g )
                     80:                fprintf(stderr,"%.4gsec + gc : %.4gsec(%.4gsec)\n",e,g,r);
                     81:        else
                     82:                fprintf(stderr,"%.4gsec(%.4gsec)\n",e,r);
                     83: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>