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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> фиксация времени работы программы 
:(
    Опции темы
Sasisa
Дата 8.4.2007, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всех с праздничком!

1) Подскажите, пожалуйста, есть ли в C++ возможность зафиксировать время работы программы от момента её запуска, например? С помощью какой функции это возможно сделать? (имеется в виду с точностью хотя бы до десятых секунды)

2)Зависит ли время обработки программы при одинаковых исходных данных от чего либо, кроме загрузки процессора?

Это сообщение отредактировал(а) Sasisa - 8.4.2007, 20:43
PM MAIL   Вверх
Mayk
Дата 8.4.2007, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


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

Репутация: 45
Всего: 134



Цитата(Sasisa @  9.4.2007,  00:40 Найти цитируемый пост)


1) Подскажите, пожалуйста, есть ли в C++ возможность зафиксировать время работы программы от момента её запуска, например? С помощью какой функции это возможно сделать? (имеется в виду с точностью хотя бы до десятых секунды)

да хотя бы через clock().
Код

void sth(){
  clock_t start_time = clock();
  do{something}
  double secs = double(clock()-start_time)/CLOCKS_PER_SEC;
  cout << "time elapsed: " << secs << endl;
}



--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
ama_kid
Дата 8.4.2007, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


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

Репутация: 2
Всего: 95



Мне кажется такое решается с помощью отдельного потока (если, конечно, среда не DOS). Запускаешь поток, делаешь ему Sleep("Время работы в секундах") и перед завершением потока - завершаешь основной процесс...



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
bsa
Дата 8.4.2007, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(Sasisa @ 8.4.2007,  20:40)
2)Зависит ли время обработки программы при одинаковых исходных данных от чего либо, кроме загрузки процессора?

Да. Например, от загруженности дисковой подсистемы, если данные берутся с диска.
PM   Вверх
Sasisa
Дата 8.4.2007, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Среда как раз Dos...

попробовал использовать Clock(), но в результате время обработки программы оказывается 0.00000

К примеру, при таком варианте время обработки так же выдается 0.00000
Код

int main(void)
{
   clock_t start, end;
   start = clock();

   delay(20);

   end = clock();
   printf("The time was: %f\n", (end - start) / CLK_TCK);
   getch();

   return 0;
}


если же поставить delay(200), то время будет примерно таким 0.164352
Хоть программный код подопытной проги не очень большой, но все таки хотелось бы видеть хоть какие доли секунды, а не нули...как быть? может есть еще какие варианты или нюансы?
PM MAIL   Вверх
Rickert
Дата 9.4.2007, 05:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



Код

   printf("The time was: %d\n", (end - start) / CLK_TCK);

А так?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Dov
Дата 9.4.2007, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Цитата(Rickert @  9.4.2007,  05:53 Найти цитируемый пост)
А так?

Скорее так
Код

printf("The time was: %f\n", (double)(end - start) / CLK_TCK);





--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
vinter
Дата 9.4.2007, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



скорее так smile 
Код

printf("The time was: %d\n", (end - start));

время в миллисекундах



--------------------
Мой блог
PM MAIL WWW   Вверх
Sasisa
Дата 9.4.2007, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Лучше всего работает вариант, предложенный Dov

Код

printf("The time was: %f\n", (double)(end - start) / CLK_TCK);


но все равно не достаточно точно :( например, при задержке delay(10) уже показывает нули.
может стоит запускать прогу на Pentim I или вообще на 486? smile
PM MAIL   Вверх
FiMa1
Дата 9.4.2007, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А может лучше профайлером таки замерить.. и наглядно и действенно.. Могу отсоветовать vTune.
PM   Вверх
Daevaorn
Дата 9.4.2007, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 51
Всего: 70



Цитата(FiMa1 @  9.4.2007,  12:35 Найти цитируемый пост)
Могу отсоветовать vTune.

Вот правильно, vTune можно только отсоветовать. AQtime - реальный инструмент
PM MAIL WWW   Вверх
Rickert
Дата 9.4.2007, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



Короче юзайте GetTickCount(), а не какой-то гонимый clock()


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Sasisa
Дата 9.4.2007, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем спасибо!
буду искать варианты из вышепредложенного smile

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


Шустрый
*


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

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



Если clock показывает 0.0000 значит прошло очень мало времени. 
Цитата

(имеется в виду с точностью хотя бы до десятых секунды)

так что тебе хаватит

А при замере времени выполнения алгоритма обычно его помещают в цикл while (i < 10000) ....

Я  показывал преподавателю результаты замера с помощью профайлера, он объяснял на примере с ниткой: размер нитки трудно измерить,
 измерить толщину мотка уже проще. Да.. давно уже было....
PM MAIL   Вверх
Daevaorn
Дата 9.4.2007, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 51
Всего: 70



Цитата(Rickert @  9.4.2007,  13:38 Найти цитируемый пост)
Короче юзайте GetTickCount(), а не какой-то гонимый clock()

А мой компилятор не понимает GetTickCount() :(
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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