[comp.os.msdos.programmer] MSC 6.0

kdb@chinet.chi.il.us (Karl Botts) (11/06/90)

If you wanna see some aggressive optimization, compile this with MSC 6.0
using -Od, then with -Ox, execute 'em, and compare the results (L model;
I haven't tried the others).

--------------------------- cut ---------------------
/* kdb$hpb 19:41:01 11/05/90 */

#include <stdio.h>
#include <stdlib.h>

typedef unsigned short word;

#define loword(d) (*((word *)&(d)))
#define hiword(d)	(*(((word *)&(d)+1)))

#define HASHPAGE(pg, fd)	(loword(pg) ^ hiword(pg) ^ fd * 5821)

#ifndef NUM_CHAINS
#define NUM_CHAINS 32
#endif

long lrand()
{
	long l;

	loword(l) = rand();
	hiword(l) = rand();
	return(l);
}



main()
{
	int fd;
	long l;
	long chains[NUM_CHAINS];

	for ( fd = 0; fd < _NFILE; fd++ ) {
		word hash;
		memset(chains, 0, sizeof(chains));
		for ( l = 0; l < 100000; l++ ) {
			long x = lrand();
			hash = HASHPAGE(x, fd);
			hash %= NUM_CHAINS;
			chains[hash]++;
		}
		for ( hash = 0; hash < NUM_CHAINS; hash++ )
			printf("%ld%c", chains[hash], (hash + 1) % 16 ? ' ' : '\n');
		printf("\n");
	}

	return 0;
}