Автор: Фитч (17.01.2008 в 13:11)
Вот, можете сравнить производительность:
#include <math.h>
#include <stdio.h>
#include <windows.h>
inline bool isSimple1(long num)
{
if ( (num % 2) != 0)
{
for(int i = 0; i < (num / 2); i++)
{
if ( (num % i) == 0)
{
return false;
}
}
return true;
}
return false;
}
inline bool isSimple2(long num)
{
if ( (num % 2) != 0)
{
for(int i = 0; i < sqrt(num); i++)
{
if ( (num % i) == 0)
{
return false;
}
}
return true;
}
return true;
}
int main()
{
DWORD dwTime = GetTickCount();
for(int i = 0; i < 200000000; i++)
{
isSimple1( rand() / RAND_MAX * 2000000000 );
}
printf("Метод с делением пополам: %d мс\n", GetTickCount() - dwTime);
dwTime = GetTickCount();
for(int i = 0; i < 200000000; i++)
{
isSimple2( rand() / RAND_MAX * 2000000000 );
}
printf("Метод с квадратным корнем: %d мс\n", GetTickCount() - dwTime);
scanf("\n");
return 0;
}
|