Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: Фитч   (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++)
 {
  isSimple1rand() / RAND_MAX * 2000000000 );
 }
 printf("Метод с делением пополам: %d мс\n"GetTickCount() - dwTime);
 
 dwTime = GetTickCount();
 for(int i = 0; i < 200000000; i++)
 {
  isSimple2rand() / RAND_MAX * 2000000000 );
 }
 printf("Метод с квадратным корнем: %d мс\n"GetTickCount() - dwTime);
 
 scanf("\n");
 return 0;
}


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: