2008年12月25日 星期四

計算發動率

// Coverage.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include


int _tmain(int argc, _TCHAR* argv[])
{

const int Range = 6000;
int Lasting = 1500;
const int TotalTest = 20000;
const int TotalProc = 3;

unsigned char* valueArray;
valueArray = (unsigned char*)malloc(Range);

int totalCount = 0;
for ( int k = 0; k < TotalTest; k++ )
{
int r;
memset( valueArray, 0, Range );
srand( GetTickCount() + rand());
for ( int i = 0; i < TotalProc; i++ )
{
r = rand() % Range;

/*
if ( i == 3 )
Lasting = 1000;
else
Lasting = 1500;
*/


for ( int j = 0; j < Lasting; j++ )
valueArray[(r+j)%Range] = 0xAA;
}
int count = 0;
for ( int i = 0; i < Range; i++ )
if ( valueArray[i] == 0xAA )
count++;

wprintf(L" %d / %d\r\n", count, Range);
totalCount += count;
}

free( valueArray );
wprintf( L" Average %d coverage %f\r\n", totalCount / TotalTest, (double)totalCount / TotalTest /Range );
Sleep(15000);
return 0;
}