$!----------------------------------------------------------------------------+ $! Ctrl/T-like statistics; See bottom of file for directions | $!----------------------------------------------------------------------------+ $ SAVERIFY = 'F$VERIFY(0)' $ IF P1 .EQS. "" THEN P1 = "0" $ IF F$LOCATE("-",P1) .NES. F$LENGTH(P1) THEN GOTO SUBTRACT $ STATS_TIME'P1' == F$EXTRACT(12,8,F$TIME()) $ STATS_CPUALL'P1' == F$GETJPI(0,"CPUTIM") $ STATS_FAULTS'P1' == F$GETJPI(0,"PAGEFLTS") $ STATS_IO'P1' == F$GETJPI(0,"BUFIO")+F$GETJPI(0,"DIRIO") $ STATS_MEM'P1' == F$GETJPI(0,"PPGCNT") + F$GETJPI(0,"GPGCNT") $ CPUALL = STATS_CPUALL'P1' $ GOSUB CVTHR $ WRITE SYS$OUTPUT - F$FAO("!AS!AS !AS (DCL) CPU=!AS PF=!UL IO=!UL MEM=!UL",- F$TRNLNM("SYS$NODE"),F$GETJPI(0,"PRCNAM"),STATS_TIME'P1',CPU,- STATS_FAULTS'P1',STATS_IO'P1',STATS_MEM'P1') $ EXIT 1 + 0*F$VERIFY(SAVERIFY) $ CVTHR: $ CPUSEC = CPUALL/100 $ CPUHUN = CPUALL-CPUSEC*100 $ CPUMIN = CPUSEC/60 $ CPUSEC = CPUSEC-CPUMIN*60 $ CPUHOR = CPUMIN/60 $ CPUMIN = CPUMIN-CPUHOR*60 $ CPU = F$FAO("!2ZB:!2ZB:!2ZB.!2ZB",CPUHOR,CPUMIN,CPUSEC,CPUHUN) $ RETURN $ SUBTRACT: $ ONE = F$ELEMENT(0,"-",P1) $ TWO = F$ELEMENT(1,"-",P1) $ TIME1 = STATS_TIME'ONE' $ TIME2 = STATS_TIME'TWO' $ PF1 = STATS_FAULTS'ONE' $ PF2 = STATS_FAULTS'TWO' $ PFD = PF1 - PF2 $ IO1 = STATS_IO'ONE' $ IO2 = STATS_IO'TWO' $ IOD = IO1 - IO2 $ MEM1 = STATS_MEM'ONE' $ MEM2 = STATS_MEM'TWO' $ MEMD = MEM1 - MEM2 $ CPU1 = STATS_CPUALL'ONE' $ CPU2 = STATS_CPUALL'TWO' $ CPUALL = CPU1 - CPU2 $ GOSUB CVTHR $ CPUD = CPU $ CPUALL = CPU1 $ GOSUB CVTHR $ CPU1 = CPU $ CPUALL = CPU2 $ GOSUB CVTHR $ CPU2 = CPU $ FAOFMT = "At !AS CPU=!AS PF=!UL IO=!UL MEM=!UL" $ WRITE SYS$OUTPUT F$FAO(FAOFMT,TIME2,CPU2,PF2,IO2,MEM2) $ WRITE SYS$OUTPUT F$FAO(FAOFMT,TIME1,CPU1,PF1,IO1,MEM1) $ WRITE SYS$OUTPUT - F$FAO("- Deltas - CPU=!AS PF=!SL IO=!SL MEM=!SL",CPUD,PFD,IOD,MEMD) $ EXIT 1 + 0*F$VERIFY(SAVERIFY) $! For those of you who enjoy the ^T display, and wish it were $! more useful, here's a little DCL hack. $! $! To use it, just do @STATS label several times. To get $! the difference in time, io, pf, and mem, type @STATS label2-label1. $! $! Example: $! $! $ @stats initial $! $ run myprogram_to_benchmark $! $ @stats conclusion $! $ @stats overhead $! $! Then: $! $ @stats overhead-conclusion will give you the overhead $! of running stats.com $! $! $ @stats conclusion-initial will give you the benchmark $! statistics. $! $! Original from Ehud Gavron; re-written by Harry Flowers