This is MemSpeed.m in view mode; [Download] [Up]
#import "MemSpeed.h" #import "Timer.h" @implementation MemSpeed #define SIZE 1024*1024*4 #define SIZE2 1024*1024 #define NSSPEED 33.636875 char *array; - setupBenchmark { [timer setNoPS:YES]; array = malloc(SIZE); return self; } - benchmark { int i,j,k; double t2,t1; /* map array into memory */ memset(array,0,sizeof(SIZE2)); for(i=0;i<SIZE-SIZE2;i+=16){ for(j=0;j<SIZE2;j+=16384){ k += j; /* prevent optimizations */ } } [timer stopTimer]; t1 = [timer appTime]; [timer startTimer]; for(i=0;i<SIZE-SIZE2;i+=16){ for(j=0;j<SIZE2;j+=16384){ k += j; array[i] += array[j]; } } [timer stopTimer]; t2 = [timer appTime]; [memSpeedCell setDoubleValue:NSSPEED/(t2-t1)]; return self; } - shutdownBenchmark { free(array); return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.