czerny, see if this is ok, it takes 92 msecs here.

`#define WIN32_LEAN_AND_MEAN`

#include <windows.h>

#include <stdio.h>

#include <stdlib.h>

long long __cdecl StartTimer(void)

{

long long t1;

QueryPerformanceCounter((LARGE_INTEGER*)&t1);

return t1;

}

long long __cdecl StopTimer(long long t1)

{

long long t2;

long long frequency;

QueryPerformanceCounter((LARGE_INTEGER *) & t2);

QueryPerformanceFrequency((LARGE_INTEGER *) & frequency);

long long elapsedTime = (t2 - t1) * 1000 / frequency;

return (long long)elapsedTime;

}

int __cdecl main(void)

{

#define SIZE 20000000

unsigned long int i;

unsigned long int * arry;

arry = malloc(SIZE * sizeof(unsigned long int));

if(arry == NULL){

printf("Error, no mem!");

return 0;

}

for (i = 0; i<SIZE; i++)

{

arry[i] = rand()%10000;

}

long long t = StartTimer();

unsigned long int maximum;

int freq = 1;

maximum = arry[0];

for (i = 0; i < SIZE; i++)

{

if (arry[i] > maximum){

maximum = arry[i];

freq = 1;

}else if(arry[i] == maximum){

freq++;

}

}

printf("msecs %lld\n", StopTimer(t));

printf("maximum %d has occurences: %d times\n", maximum, freq);

free(arry);

return 0;

}

EDIT: freq = 1;

John