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.