Tags:
create new tag
view all tags
#include <stdio.h>
#include <sys/types.h>
#include <sys/time.h>

#define N 80
#define NPROVE 5

double m1[N][N];
double m2[N][N];

long deltausecs(struct timeval last, struct timeval first);
long guess_clock_overhead();

int main(int argc,char **argv) {
	int p,q,z;

	long overhusec;
	long deltaus;
	
	struct timeval before,after;
	
	printf("clock overhead: %ld\n",overhusec = guess_clock_overhead());
	
	for (z=0 ; z<NPROVE ; z++) {
		(void) gettimeofday(&before, (struct timezone *) 0);
		
		for (p=0 ; p<N ; p++)
			for (q=0 ; q<N ; q++) {
				m1[p][q] = p;
				m2[p][q] = 1;
			}
		
		(void) gettimeofday(&after, (struct timezone *) 0);
		deltaus = deltausecs(after,before);
		printf("Elapsed Time: %ld microsec \n",deltaus-overhusec);
	}
	
	return 0;
}

/* elapsed time, assuming midnight not bracketed */
long deltausecs(struct timeval last,struct timeval first)
{
	return (last.tv_sec - first.tv_sec) * 1000000L +
			  last.tv_usec - first.tv_usec;
}


/* clock overhead estimate */
long guess_clock_overhead() {

	register int i;
	long sumt,cnt;
	long volatile deltausec;
	struct timeval before,after;
	
	sumt = cnt = 0L;
	
	/* cache clock code */
	(void) gettimeofday(&before, (struct timezone *) 0);
	(void) gettimeofday(&after , (struct timezone *) 0);
	deltausec = deltausecs(after,before);
	
	for (i = 0 ; i < 100 ; ++i ) {
		(void) gettimeofday(&before, (struct timezone *) 0);
		(void) gettimeofday(&after , (struct timezone *) 0);
		deltausec = deltausecs(after,before);
		if (deltausec < 100) {
			sumt += deltausec;
			cnt++;
		}
	}
	printf("sumt %ld cnt %ld\n",sumt,cnt);
 	if (!cnt) /* horrible special case */
		return 20L;
	else
		return sumt/cnt;
}
		


-- Users.AntonioValletta - 14 Nov 2001 
Topic revision: r1 - 2001-11-14 - AntonioValletta






 
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback