Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > фиксация времени работы программы |
Автор: Sasisa 8.4.2007, 20:40 |
Всех с праздничком! 1) Подскажите, пожалуйста, есть ли в C++ возможность зафиксировать время работы программы от момента её запуска, например? С помощью какой функции это возможно сделать? (имеется в виду с точностью хотя бы до десятых секунды) 2)Зависит ли время обработки программы при одинаковых исходных данных от чего либо, кроме загрузки процессора? |
Автор: ama_kid 8.4.2007, 21:03 |
Мне кажется такое решается с помощью отдельного потока (если, конечно, среда не DOS). Запускаешь поток, делаешь ему Sleep("Время работы в секундах") и перед завершением потока - завершаешь основной процесс... |
Автор: bsa 8.4.2007, 21:08 | ||
Да. Например, от загруженности дисковой подсистемы, если данные берутся с диска. |
Автор: Sasisa 8.4.2007, 23:50 | ||
Среда как раз Dos... попробовал использовать Clock(), но в результате время обработки программы оказывается 0.00000 К примеру, при таком варианте время обработки так же выдается 0.00000
если же поставить delay(200), то время будет примерно таким 0.164352 Хоть программный код подопытной проги не очень большой, но все таки хотелось бы видеть хоть какие доли секунды, а не нули...как быть? может есть еще какие варианты или нюансы? |
Автор: Rickert 9.4.2007, 05:53 | ||
А так? |
Автор: Dov 9.4.2007, 09:09 | ||
Скорее так
|
Автор: vinter 9.4.2007, 09:54 | ||
скорее так ![]()
время в миллисекундах |
Автор: Sasisa 9.4.2007, 11:15 | ||
Лучше всего работает вариант, предложенный Dov
но все равно не достаточно точно :( например, при задержке delay(10) уже показывает нули. может стоит запускать прогу на Pentim I или вообще на 486? ![]() |
Автор: FiMa1 9.4.2007, 11:35 |
А может лучше профайлером таки замерить.. и наглядно и действенно.. Могу отсоветовать vTune. |
Автор: Daevaorn 9.4.2007, 12:07 |
Вот правильно, vTune можно только отсоветовать. http://www.automatedqa.com/products/aqtime/index.asp - реальный инструмент |
Автор: Rickert 9.4.2007, 12:38 |
Короче юзайте GetTickCount(), а не какой-то гонимый clock() |
Автор: Sasisa 9.4.2007, 13:15 |
Всем спасибо! буду искать варианты из вышепредложенного ![]() |
Автор: aldari 9.4.2007, 13:26 | ||
Если clock показывает 0.0000 значит прошло очень мало времени.
так что тебе хаватит А при замере времени выполнения алгоритма обычно его помещают в цикл while (i < 10000) .... Я показывал преподавателю результаты замера с помощью профайлера, он объяснял на примере с ниткой: размер нитки трудно измерить, измерить толщину мотка уже проще. Да.. давно уже было.... |
Автор: Daevaorn 9.4.2007, 13:40 |
А мой компилятор не понимает GetTickCount() :( |
Автор: JackYF 10.4.2007, 00:48 |
Rickert, ![]() <imho> Я тоже не понимаю, зачем юзать непереносимый GetTickCount() там, где нужна точность до десятых секунды. Кстати! ![]() Это только в Виндах clock() такой неточный. В Линухах им можно сотнитысячные доли секунды замерять. И кто там гонимый? ![]() ![]() </imho> |
Автор: Rickert 10.4.2007, 03:50 |
GetTickCount() есть в vs это точно. Ну раз уж на то пошло, то надо юзать time(0). Он точно есть и в gcc и в vs. |
Автор: fantast 10.4.2007, 10:46 |
а по мне лучше всего timeGetTime. Это времы которое прошло с начала старта системы (ОС). Оно кажется ваще считается самой виндой в своих потоках и точность там огого. измеряется в милисекундах. мне кажется лучший вариант |
Автор: JackYF 10.4.2007, 14:24 | ||
оно в секундах время выдает. Маловато может быть.
Вот... опять все виндовые АПИ. ИМХО, конечно ) |
Автор: Mayk 10.4.2007, 17:55 | ||
![]() Замечано, что WinApi очень плохо работает в . хотя бы в силу своего отсутствия. |
Автор: fantast 10.4.2007, 22:08 |
ггг ну да ступил немножко, недосмотрел ![]() |