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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Длительность операции в миллисекундах, Возможно ли это? 
V
    Опции темы
JoeBlack
Дата 12.10.2006, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброе время суток!
Можно подсчитать время выполнения чего-то( всей проги или какой-то части ее) в секундах. Возможно ли более мелкое деление (миллисекунды, например..)? Или, что еще лучше, в тактах.... Хотя, за один такт может выполняться несколько операций ( если правильно помню). 
Спасибо!
PM MAIL   Вверх
Romikgy
Дата 12.10.2006, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



легко 
GetTickCount()
до операции и после , разница между ними и будет, то что те нужно


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

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


Шустрый
*


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

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



Еще можно использовать GetSystemTime, если операция достаточно длительная
PM MAIL ICQ   Вверх
Дрон
Дата 12.10.2006, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


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

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



QueryPerformanceFrequency и QueryPerformanceCounter -- конечно, не такты, но точность хоть куда smile

Добавлено @ 13:39 
А вообще сто раз уже спрашивали. На форуме ведь есть поиск smile

Это сообщение отредактировал(а) Дрон - 12.10.2006, 13:40


--------------------
Да. Именно так.
PM   Вверх
Мяут
Дата 12.10.2006, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

#include <sys/time.h>

clock_t start = clock(), end;
//...
end = clock();
printf("Execution time: %.2f ms", float(end-start)*1000/CLOCKS_PER_SEC);


Насчет тактов - не уверен  smile 
PM MAIL   Вверх
JoeBlack
Дата 12.10.2006, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо за помощь! А Дрон отдельное спасибо за нагоняй..))))) Действительно посмотрел потом, была такая тема...Только я почему-то был уверен, что это мало кому понадобится. Посему, если и спрашивали, то скорей всего речь шла лишь о секундах...
Спасибо!!!!!

Это сообщение отредактировал(а) JoeBlack - 12.10.2006, 15:26
PM MAIL   Вверх
vinter
Дата 12.10.2006, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



Цитата

printf("Execution time: %.2f ms", float(end-start)*1000/CLOCKS_PER_SEC);

зачем сначала делить н 1000, а потом умножать на нее же??


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


полуавантюрист
****


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

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



Ну, кстати, не факт же, что CLOCK_PER_SEC равно именно 1000. В моей реализации тоже так, но мало ли...
Стандарт есть стандарт... Переносимость того стоит, ИМХО.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
vinter
Дата 12.10.2006, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



секунды это международный стандарт, а ф-ия clock() дает значение в миллисекундах, так что значение 
Цитата

CLOCK_PER_SEC

может изменится, только если у человечества изменится представление о времени ИМХО


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


Новичок



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

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



Цитата(vinter @  12.10.2006,  17:11 Найти цитируемый пост)
может изменится, только если у человечества изменится представление о времени ИМХО 

Жертовать переносимостью ради дополнительных действий компилятора (уверен, что он проглотит конструкцию *1000/1000 не подавившись?  smile 

Цитата(vinter @  12.10.2006,  17:11 Найти цитируемый пост)
может изменится, только если у человечества изменится представление о времени ИМХО 

У человечества - нет. У процессоров - да  smile 
PM MAIL   Вверх
JackYF
Дата 12.10.2006, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


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

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



В дополнение к Мяут'у:

Цитата(vinter @  12.10.2006,  17:11 Найти цитируемый пост)
значение в миллисекундах,


Функция clock() не дает "значение в миллисекундах"! В каком стандарте ты это вычитал?
Я, когда разбирался с этой функцией, такого не увидел...





--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
vinter
Дата 12.10.2006, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



Цитата

Функция clock() не дает "значение в миллисекундах"! В каком стандарте ты это вычитал?
Я, когда разбирался с этой функцией, такого не увидел...

кроме С'шного стандарта существует еще метрологические стандарты.. и в них как раз описано , что приставка милли есть ничто иное как 10^-3 , при делении на CLOCK_PER_SEC мы получаем значение в секундах, я думаю дальше объяснять не нужно smile 


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


полуавантюрист
****


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

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



Цитата(vinter @  12.10.2006,  21:36 Найти цитируемый пост)
Цитата

Функция clock() не дает "значение в миллисекундах"! В каком стандарте ты это вычитал?
Я, когда разбирался с этой функцией, такого не увидел...

кроме С'шного стандарта существует еще метрологические стандарты.. и в них как раз описано , что приставка милли есть ничто иное как 10^-3 , при делении на CLOCK_PER_SEC мы получаем значение в секундах, я думаю дальше объяснять не нужно smile


Я знаю, что такое приставка милли  smile 
Просто, извини, я не видел слово миллисекунды в описании функции. Откуда ты точно знаешь, что она отдает миллисекунды? Из размеры константы CLOCKS_PER_SEC ?  smile

Добавлено @ 16:40 
РазмерА smile

Добавлено @ 16:40 
А точнее, значения...


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
vinter
Дата 13.10.2006, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



Цитата

 Откуда ты точно знаешь, что она отдает миллисекунды?  

ну не прям точно smile , просто в программирование все логично, и я думаю здесь точно так же smile 
Цитата

Из размеры константы CLOCKS_PER_SEC ?

да


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


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



vinter, имхо точнее будет даже 
Цитата(Romikgy @  12.10.2006,  12:18 Найти цитируемый пост)
GetTickCount()

нежели
Цитата(JackYF @  13.10.2006,  15:39 Найти цитируемый пост)
clock()

т.к. клок выдает время в секундах, а ты переводишь в милисекунды!
а геттиккаунт сразу выдает в милисекундах 
Цитата(vinter @  13.10.2006,  16:28 Найти цитируемый пост)
 все логично

 smile 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0592 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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