ftp.nice.ch/pub/next/tools/performance/NWBench.NIHS.bs.tar.gz#/NWBench.NIHS.bs/Source/MemSpeed.m

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.