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


Автор: klein 7.10.2006, 21:21
    smile Доброго времени суток! smile 
  В связи с наличием настроек в С++ билдере на оптимизацию компилирования возникла мысль на тестирование одной и той же пограммы (точнее кода ) скомпилированых при разных настройках, возникла мысль написать програму на основе цикла со счетчиком времени.
   Алгоритм такой : до начала исполнения цикла считывается время в даный момент (Собственно в этом и состоит мой вопрос. Как для консольки узнать время?) , и спосле цикла тоже фиксируется время, от которого отнимается первое время.
   И еще возникает вопрос как отнимать время ( может быть с помощью масива) ?

   Прошу прощения за граматику, русский не мой родной язык.  А также просьба не давать уже готовый код, так мне будет интереснее помучиться. smile 
   Заранее благодарен.  smile 

Автор: Daevaorn 7.10.2006, 21:33
klein, 
http://windowssdk.msdn.microsoft.com/en-us/library/ms632592.aspx

А вообще для этого профайлеры существуют:
http://www.automatedqa.com/products/aqtime/

Автор: klein 7.10.2006, 21:42
 Из даных ссылок наверно я много пользы не высосу, хотя постараюсь.
 А никакого оператора или функции нет ?

Автор: Daevaorn 7.10.2006, 21:53
Цитата(klein @  7.10.2006,  22:42 Найти цитируемый пост)
 А никакого оператора или функции нет ? 

В первой ссылке как раз и описаны функции

Автор: klein 7.10.2006, 21:57
Извиняюсь, с первого разу не розглядел, хотя асортимент настолько объемный, что не знаю с чего начинать.  smile 

Автор: klein 8.10.2006, 11:50
 Сори за навязчивость. smile 
 Чтото не могу розобраться. При выборе из всех функций остановился на QueryPerformanceCounter   и   SetTimer. Мне кажется что больше подходит второй вариант.  smile 

Автор: Daevaorn 8.10.2006, 12:01
файл xtimer.h: 
Код

#pragma once
#define WIN32_LEAN_AND_MEAN
#include <windows.h>

class CXTimer {
  __int64 Freq;
  __int64 Start;

  void InitFreq();
public:
  CXTimer();

  void Reset();
  inline double GetElapsed();
  inline double GetElapsedSec();
  inline double GetFreq();
};


файл xtimer.cpp 
Код

#include "xtimer.h"

CXTimer::CXTimer()
{
  InitFreq();
  Reset();
}

void CXTimer::InitFreq()
{
  QueryPerformanceFrequency((PLARGE_INTEGER) &Freq);
}

void CXTimer::Reset()
{
  QueryPerformanceCounter((PLARGE_INTEGER) &Start);
}

inline double CXTimer::GetElapsed()
{
  __int64 Now;
  QueryPerformanceCounter((PLARGE_INTEGER) &Now);
  return (double) (Now - Start);
}

inline double CXTimer::GetElapsedSec()
{
  return GetElapsed() / GetFreq();
}

inline double CXTimer::GetFreq()
{
  return (double) Freq;
}

 

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