1*13239Sgarrison /* time programs */ 2*13239Sgarrison # include "stdio.h" 3*13239Sgarrison # include "sys/types.h" 4*13239Sgarrison # include "sys/timeb.h" 5*13239Sgarrison struct tbuffer { 6*13239Sgarrison long proc_user_time; 7*13239Sgarrison long proc_system_time; 8*13239Sgarrison long child_user_time; 9*13239Sgarrison long child_system_time; 10*13239Sgarrison }; 11*13239Sgarrison static long start, user, system; 12*13239Sgarrison tick() 13*13239Sgarrison { 14*13239Sgarrison struct tbuffer tx; 15*13239Sgarrison struct timeb tp; 16*13239Sgarrison times (&tx); 17*13239Sgarrison ftime (&tp); 18*13239Sgarrison user = tx.proc_user_time; 19*13239Sgarrison system= tx.proc_system_time; 20*13239Sgarrison start = tp.time*1000+tp.millitm; 21*13239Sgarrison } 22*13239Sgarrison tock() 23*13239Sgarrison { 24*13239Sgarrison struct tbuffer tx; 25*13239Sgarrison struct timeb tp; 26*13239Sgarrison float lap, use, sys; 27*13239Sgarrison if (start==0) return; 28*13239Sgarrison times (&tx); 29*13239Sgarrison ftime (&tp); 30*13239Sgarrison lap = (tp.time*1000+tp.millitm-start)/1000.; 31*13239Sgarrison use = (tx.proc_user_time - user)/60.; 32*13239Sgarrison sys = (tx.proc_system_time - system)/60.; 33*13239Sgarrison printf("Elapsed %.2f CPU %.2f (user %.2f, sys %.2f)\n", 34*13239Sgarrison lap, use+sys, use, sys); 35*13239Sgarrison } 36