From owner-freebsd-hackers Sat Jul 8 22:05:54 1995 Return-Path: hackers-owner Received: (from majordom@localhost) by freefall.cdrom.com (8.6.10/8.6.6) id WAA18292 for hackers-outgoing; Sat, 8 Jul 1995 22:05:54 -0700 Received: from kryten.atinc.com (kryten.atinc.com [198.138.38.7]) by freefall.cdrom.com (8.6.10/8.6.6) with ESMTP id WAA18286 for ; Sat, 8 Jul 1995 22:05:51 -0700 Received: (jmb@localhost) by kryten.atinc.com (8.6.9/8.3) id AAA15945; Sun, 9 Jul 1995 00:54:29 -0400 Date: Sun, 9 Jul 1995 00:54:28 -0400 (EDT) From: "Jonathan M. Bresler" Subject: ramspeed.c To: "Serge A. Krashakov" cc: hackers@freebsd.org Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: hackers-owner@freebsd.org Precedence: bulk here it is Jonathan M. Bresler jmb@kryten.atinc.com | Analysis & Technology, Inc. FreeBSD Postmaster jmb@FreeBSD.Org | 2341 Jeff Davis Hwy play go. | Arlington, VA 22202 ride bike. hack FreeBSD.--ah the good life | 703-418-2800 x346 /* ** ramspeed--Poul-Henning Kamp ** ** ** */ #include #include #include #include #include #include typedef unsigned long test_t; #define TESTSIZE (8192*1024) #define NOPS 1024*1024*16 #define NFACTOR 11 #define NVOL (NOPS*NFACTOR) int main(int argc,char **argv) { test_t *area, *chunk; test_t *pointer,x1=0,x2=0; unsigned counter,leap; int i; double delta; struct timeval before,middle,after; struct timezone tzb,tza; if (sizeof *area != 4) { perror("Need 32 bit test_t"); exit(2); } pointer = area=malloc(TESTSIZE); if(!area) { perror("malloc"); exit(2); } memset(area,'D',TESTSIZE); chunk = area + TESTSIZE / sizeof *area - 102; leap = TESTSIZE / sizeof *area - 204; gettimeofday(&before,&tzb); for(counter=0;counter= chunk) { pointer -= leap; } } gettimeofday(&middle,&tza); for(counter=0;counter= chunk) { pointer -= leap; } } gettimeofday(&after,&tza); if (x1 != 0x49005fb0) {perror("Wrong result"); exit(1); } if (x2 != 0x8938c0df) {perror("Wrong result"); exit(1); } delta =middle.tv_sec - before.tv_sec; delta +=(middle.tv_usec - before.tv_usec)/1000000.0; printf("%08lx ",x1); printf(" %6.3f uS/op", delta*1000000.0/NVOL); printf(" %7.2e op/S", NVOL/delta); printf(" %6.3f Mb/S\n", (NVOL*sizeof *pointer/(1024.0*1024.0)) / delta); delta =after.tv_sec - middle.tv_sec; delta +=(after.tv_usec - middle.tv_usec)/1000000.0; printf("%08lx ",x2); printf(" %6.3f uS/op", delta*1000000.0/NVOL); printf(" %7.2e op/S", NVOL/delta); printf(" %6.3f Mb/S\n", (NVOL*sizeof *pointer/(1024.0*1024.0)) / delta); return 0; }