Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать время работы пограммы? Например, алгоритма сортировки 
:(
    Опции темы
HMLd
Дата 29.6.2006, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 27.6.2006
Где: Polska

Репутация: 1
Всего: 0



Как узнать время выполнения программы?...Я что-то слышал про 046Ch...
Можно пример?...Или линк на статью...smile 
PM MAIL   Вверх
Kostt
Дата 29.6.2006, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 169
Регистрация: 8.1.2006
Где: Томск

Репутация: 1
Всего: 3



ОС какая? 
PM MAIL   Вверх
chaos
Дата 29.6.2006, 07:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



вот тебе пример(тоже однажды решил фигней пострадать - позамерять)

Код

#define WIN32_LEAN_AND_MEAN  /* speed up compilations */ 
#include <windows.h> 
#include <stdlib.h> 
#include <stdio.h> 

#define ARRSIZE 150000 

__int64 FileTimeToQuadWord(PFILETIME pft) 
{ 
   return(Int64ShllMod32(pft->dwHighDateTime, 32) | pft->dwLowDateTime); 
} 

ULONG Thread(LPVOID lpData) 
{ 
   FILETIME ftCreationTime1, ftCreationTime2; 
   FILETIME ftExitTime1, ftExitTime2; 
   FILETIME ftKernelTime1, ftKernelTime2; 
   FILETIME ftUserTime1, ftUserTime2; 
    
   int x; 
   int *lpArray = (int *)malloc(sizeof(int) * ARRSIZE ); 

   //непосредственно начала замеряемого участка 
   GetThreadTimes(GetCurrentThread(), &ftCreationTime1, &ftExitTime1, &ftKernelTime1, &ftUserTime1); 
   for (size_t i = 1; i < ARRSIZE; i++) 
      for(size_t j = ARRSIZE - 1; j >= i; j--) 
           if (lpArray[j - 1] > lpArray[j])     
         { 
               x = lpArray[j - 1]; 
                   lpArray[j - 1] = lpArray[j]; 
            lpArray[j] = x; 
             } 
   GetThreadTimes(GetCurrentThread(), &ftCreationTime2, &ftExitTime2, &ftKernelTime2, &ftUserTime2); 
   //конец
   free(lpArray); 

   __int64 m_qwKernelTimeElapsed, m_qwUserTimeElapsed; 
   m_qwKernelTimeElapsed = FileTimeToQuadWord(&ftKernelTime2) - FileTimeToQuadWord(&ftKernelTime1); 
   m_qwUserTimeElapsed = FileTimeToQuadWord(&ftUserTime2) - FileTimeToQuadWord(&ftUserTime1); 
   double m_qwTotalTimeElapsed = (m_qwKernelTimeElapsed + m_qwUserTimeElapsed) / 1E7; 


   char szResult[20] = {0}; 
   sprintf(szResult, "%7.3f", m_qwTotalTimeElapsed); 
   MessageBox(NULL, szResult, "Result", MB_OK); 

   return 0; 
} 

int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) 
{ 

   DWORD dwThreadId; 
   HANDLE hThread1 = CreateThread(NULL, 0, Thread, NULL, 0, &dwThreadId); 
   HANDLE hThread2 = CreateThread(NULL, 0, Thread, NULL, 0, &dwThreadId); 
   HANDLE hThread3 = CreateThread(NULL, 0, Thread, NULL, 0, &dwThreadId); 

   HANDLE lpHandles[3]; 
   lpHandles[0] = hThread1; 
   lpHandles[1] = hThread2; 
   lpHandles[2] = hThread3; 
   WaitForMultipleObjects(3, lpHandles, TRUE, INFINITE); 

   CloseHandle(hThread1); 
   CloseHandle(hThread2); 
   CloseHandle(hThread3); 

   return 0; 
} 

 
PM WWW   Вверх
MAKCim
Дата 29.6.2006, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



если *ix
можешь команду shell times использовать
# times <твоя программа>
еще достаточно точный способ через clock 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
NiJazz
Дата 29.6.2006, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 1
Всего: 23



Если под винду, то не надо таких ивзратов. Есть GetTickCount. Эта функция показывает, сколько миллисекунд прошло после старта системы (с какого-то там момента). Можно запомнить значение в начале работы алгоритма/программы и затем вычесть это значение от результата функции в конце.
Если не винда, то скорее всего clock. Linux, к примеру, вообще в плане API небогат. smile 
PM MAIL   Вверх
MAKCim
Дата 29.6.2006, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

к примеру, вообще в плане API небогат.

и это его преимущество 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
NiJazz
Дата 29.6.2006, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 1
Всего: 23



Не преимущество, а дубовизна скорее. Там до сих пор синхронизуются с помощью файлов?  smile  
PM MAIL   Вверх
MAKCim
Дата 29.6.2006, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

Не преимущество, а дубовизна скорее

Цитата

...
Философия Win32 API полностью отлична от философии UNIX. В ОС UNIX все системные вызовы опубликованы и формируют минимальный интерфейс: удаление одного из них приведет к снижению функциональности ОС. Философия Win32 заключается в предоставлении всеобъемлющего интерфейса, часто с возможностью выполнить одно и то же тремя или четырьмя способами, включающего множество функций
...
 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
HMLd
Дата 29.6.2006, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 27.6.2006
Где: Polska

Репутация: 1
Всего: 0



Цитата
ОС какая? 

Винда...

Цитата
GetTickCount

Надо попробовать заюзать... smile 
PM MAIL   Вверх
chaos
Дата 29.6.2006, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



Цитата(NiJazz @ 29.6.2006,  10:25)
Можно запомнить значение в начале работы алгоритма/программы и затем вычесть это значение от результата функции в конце.

винда "многозадачная" система так что в твои расчеты может попасть лишнее время.
лучше GetThreadTimes "не придумать" smile 
PM WWW   Вверх
SergeCpp
Дата 29.6.2006, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 15
Всего: 124



PM MAIL WWW ICQ   Вверх
Xenon
Дата 29.6.2006, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



 А при помощие макроса _TIME_ нельзя? Использовать его как точку отсчета. Время начала обработки текущего файла ... 


--------------------
user posted image  
PM MAIL   Вверх
dumb
Дата 29.6.2006, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 8
Всего: 158



Цитата(XenonSk @  29.6.2006,  13:40 Найти цитируемый пост)
 А при помощие макроса _TIME_ нельзя? Использовать его как точку отсчета. Время начала обработки текущего файла

интересная тема - подсчитывать время, прошедшее с момента компиляции...
можно еще мух на балконе посчитать smile 
PM MAIL   Вверх
Xenon
Дата 29.6.2006, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



dumb Хм, просто в книжке было "обработка файла". Я не очень понял о чем они: о компиляции, или запуске ... 


--------------------
user posted image  
PM MAIL   Вверх
MAKCim
Дата 29.6.2006, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата

А при помощие макроса _TIME_ нельзя? 

начало/конец компиляции ?  smile  


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0620 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.