Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как замерить время выполнения алгоритма?


Автор: dima_mak 2.3.2005, 21:21
сабж, на Турбо С и как можно точнее(минимум милисекунды). smile

Автор: NiJazz 2.3.2005, 21:56
Код

clock_t  cl1, cl2;

// начало алгоритма
cl1 = clock();

// конец
cl2 = clock();

Добавлено @ 21:56
Может, и другие фукнции, но суть та же.

Автор: dima_mak 2.3.2005, 22:14
да суть я понимаю smile))))))))
мне надо функции который возвращают время в мили секундах или, что то типа того.

Автор: Ni@m 3.3.2005, 00:09
Код

time_t before, after;

before = time(NULL);
someFunc();
after = time(NULL);

int itogo = after - before;


єто будет тебе разница в милисекундах.

Автор: Adil' 3.3.2005, 12:41
Если someFunc быстрая, то все это лучше оформить в цикл, типа
Код
before = time(NULL);
for(int i=0;i<1000;i++)
 someFunc();
after = time(NULL);
double itogo = (after - before)/1000.;

Автор: Guest 3.3.2005, 18:56
всё спасибо. я про цикл и не подумал smile

Автор: Fixin 3.3.2005, 19:44
Цикл может тормозить - лучше goto с условием использовать - точнее будет.

Автор: Adil' 4.3.2005, 09:41
Цитата(Fixin @ 3.3.2005, 19:44)
Цикл может тормозить - лучше goto с условием использовать - точнее будет
И то, и другое будет скомпилировано в джамп по условию...

Автор: __Sergey__ 8.3.2005, 04:05
Код

#pragma once

#pragma warning(disable : 4035)

inline unsigned __int64 GetCycleCount(void)
{
   _asm    _emit 0x0F
   _asm    _emit 0x31
}

class KTimer
{
   unsigned __int64  m_startcycle;

public:

   unsigned __int64  m_overhead;

   KTimer(void)
   {
       m_overhead = 0;
       Start();
       m_overhead = Stop();
   }
   
   void Start(void)
   {
       m_startcycle = GetCycleCount();
   }

   unsigned __int64 Stop(void)
   {
       return GetCycleCount()-m_startcycle-m_overhead;
   }
};


Автор: versus 8.3.2005, 16:56
__Sergey__, маньяк :-))

Код

#include <ctime>
using namespace std;

double TickCount()
{
  return (double)clock()/CLOCKS_PER_SEC;
}

int main()
{
  double tcount;

   tcount = TickCount(); // start

   // do some time-consuming work ..

   cout.setf(ios::fixed);
   cout.precision(2);
   cout.setf(ios::showpoint);

   cout << "Execution time: " << TickCount() - tcount << " sec " << endl; // finish
}

Автор: Да гость я... 14.3.2005, 07:16
Для всех, кто хочет пользовать ф-цию time() для определения временнЫх интервалов в msec стандарт CRT-библиотеки, а также фирма MS напоминают:

Цитата
time

Gets the system time.

Return Value

time returns the time in elapsed seconds

ЗЫ: Кто-то умеет мерить величину меньшей дискретности, чем дискретность метода её измерения?

Автор: LuckLess 14.3.2005, 15:25
см.
QueryPerformanceCounter()
и
QueryPerformanceFrequency ()

Автор: _hunter 14.3.2005, 18:35
LuckLess, на турбо С ( который под дос ) ;)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)