Модераторы: 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   Вверх
vinter
Дата 14.10.2006, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



Цитата

т.к. клок выдает время в секундах

наоборот выдает он как-раз в миллисекундах, а переводят в секунды.


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


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


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

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



vinter, одно меня смущает 
Код

#include <time.h>
clock_t clock(void);

Description
Determines processor time.
clock can be used to determine the time interval between two events. To determine the time in seconds, the value returned by clock should be divided by the value of the macro CLK_TCK.


нигде не говорится что время возвращеное этой ф_цией является милисекундами smile
в макрос CLK_TCK имхо может всунутся все что угодно , хотя под винду вроде как это 1000


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

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


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


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

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



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


Нет, все-таки clock() выдает время не в секундах, а в "клоках", коих в секунду CLOCKS_PER_SEC...
Но это так...

ИМХО, обсуждение закончено.



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


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

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