| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Как узнать время работы пограммы? |
| Автор: HMLd 29.6.2006, 01:31 |
| Как узнать время выполнения программы?...Я что-то слышал про 046Ch... Можно пример?...Или линк на статью... |
| Автор: Kostt 29.6.2006, 07:28 |
| ОС какая? |
| Автор: chaos 29.6.2006, 07:42 | ||
вот тебе пример(тоже однажды решил фигней пострадать - позамерять)
|
| Автор: MAKCim 29.6.2006, 08:55 |
| если *ix можешь команду shell times использовать # times <твоя программа> еще достаточно точный способ через clock |
| Автор: NiJazz 29.6.2006, 10:25 |
| Если под винду, то не надо таких ивзратов. Есть GetTickCount. Эта функция показывает, сколько миллисекунд прошло после старта системы (с какого-то там момента). Можно запомнить значение в начале работы алгоритма/программы и затем вычесть это значение от результата функции в конце. Если не винда, то скорее всего clock. Linux, к примеру, вообще в плане API небогат. |
| Автор: MAKCim 29.6.2006, 10:29 | ||
и это его преимущество |
| Автор: NiJazz 29.6.2006, 10:35 |
| Не преимущество, а дубовизна скорее. Там до сих пор синхронизуются с помощью файлов? |
| Автор: MAKCim 29.6.2006, 10:53 | ||||
|
| Автор: HMLd 29.6.2006, 12:11 | ||||
Винда...
Надо попробовать заюзать... |
| Автор: chaos 29.6.2006, 12:57 | ||
винда "многозадачная" система так что в твои расчеты может попасть лишнее время. лучше GetThreadTimes "не придумать" |
| Автор: SergeCpp 29.6.2006, 13:12 |
| http://forum.vingrad.ru/index.php?showtopic=92318 |
| Автор: Xenon 29.6.2006, 13:40 |
| А при помощие макроса _TIME_ нельзя? Использовать его как точку отсчета. Время начала обработки текущего файла ... |
| Автор: Xenon 29.6.2006, 16:44 |
| dumb Хм, просто в книжке было "обработка файла". Я не очень понял о чем они: о компиляции, или запуске ... |
| Автор: MAKCim 29.6.2006, 16:45 | ||
начало/конец компиляции ? |
| Автор: NiJazz 29.6.2006, 16:49 | ||
Макрос __TIME__ заменяется на текущее время при выполнении кода. Это трассировочный макрос и является, кажется, строкой, для этих целей он не подходит. |
| Автор: Xenon 29.6.2006, 17:17 |
| MAKCim, ну я типа думал, что это время запуска приложения |
| Автор: maxim1000 29.6.2006, 18:48 |
при выполнении кода понятия макрос не существует оно есть только на этапе разработки/компиляции (даже не линковки) |
| Автор: SergeCpp 30.6.2006, 07:44 |
| MSDN __TIME__ The most recent compilation time of the current source file. The time is a string literal of the form hh:mm:ss. |
| Автор: MAKCim 30.6.2006, 09:29 | ||
я бы даже сказал на этапе препроцессирования |
| Автор: Xenon 30.6.2006, 11:28 |
| Но если нужно узнать время работы программы, то почему бы в самом ее начале не воткнуть цикл-счетчик и все? Или я не совсем так понял задачу ... |
| Автор: SergeCpp 30.6.2006, 11:56 |
| В Вашем решении считается время всех процессов... |
| Автор: MAKCim 30.6.2006, 11:57 | ||
а процессорное время на работу со счетчиком? |
| Автор: Xenon 30.6.2006, 15:04 |
| MAKCim, а что нужно сделать точкой отсчета? |
| Автор: MAKCim 30.6.2006, 17:08 | ||
передачу управления функции main потому как при клике по экзешнику выполняется еще куча всего, что прямо не относится к программе |
| Автор: EvgenZ 13.8.2006, 23:18 |
| А как узнать время "компьютера" и чтобы оно все время проверялось? Чтобы при запуске программы она получала время и через определенный период сравнивала время программы и системное время. |
| Автор: codelord 14.8.2006, 02:11 | ||
systime n; GetLocalTime(&n); .... можно и GetSystemTime(&n); ... а чтобы сравнить можно и самому поразмышлять это даже интересно |
| Автор: EvgenZ 14.8.2006, 12:27 |
| Что-то не понятно Сравнение согласен, можно и самому придумать без проблемм |
| Автор: EvgenZ 15.8.2006, 10:50 | ||
а как это можно обрабатывать? Например мне нужно только минуты и секунды, как мне их "переприсвоить" своему классу ? |
| Автор: Mayk 15.8.2006, 11:18 | ||||
зачем тебе текущее время в строковом виде? Лучше как выше говорят, используй clock(ибо портируемо и достаточно точно)
|
| Автор: EvgenZ 15.8.2006, 11:24 |
| если не ошибаюсь, функция clock() возвращает целочисленное значение типа clock_t – это время, прошедшее с момента запуска программы. а мне нужно системное время ящика |
| Автор: Dragon 15.8.2006, 13:10 | ||||
Имеешь в виду обмен данными между процессами? Есть функция mmap - от memory map, которая с опциями MAP_SHARED | MAP_ANONYMOUS не создает backend файла. Кроме того, расширение понятия файловой системы, например /proc - это плюс, а не минус - т.к. эти "файлы" только отображаются как часть файловой системы, на самом деле их там и не существует. Это унификация доступа к информации. По сабжу:
Вот общая реализация для Linux - но совсем несложно портировать. ExecutionTimer в принципе дает все необходимое в плане расчета времени. Но для debug целей приложение может создать производный класс с деструктором, выводящим расчитанное время в приемлемой форме - т.е. в консоль, в log файл, хоть MessageBox'ом Т.е. достаточно создать объект в начале расчетного интервала, а по выходе из области видимости по уничтожении объекта автоматически будет отображено время. |
| Автор: Бор 26.8.2006, 23:18 | ||
И жизнь покажется раем |