| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Таймер реального времени |
| Автор: gpepsi 3.2.2012, 21:39 |
| Нужен счетчик реального времени в сек. с возможностью сброса. Есть ли такой в QT или нужно самому пИсать.. |
| Автор: tzirechnoy 3.2.2012, 21:41 |
| Пишыте лучшэ сами, это строчек 5 через time(NULL) |
| Автор: gpepsi 3.2.2012, 22:58 |
что есть time(NULL) - win32? может есть что-то похожее на QElapsedTimer с возможностью сброса ? |
| Автор: math64 3.2.2012, 23:23 |
| QTime::currentTime(); позволяет узнать текущее время с точностью до миллисекунд, но и time(NULL) работает. Но так как ни Windows, ни Linux не являются системами реального времени, гарантированно отмерить промежуток времени нельзя. |
| Автор: boostcoder 3.2.2012, 23:59 |
| time(NULL) - счетчик реального времени. ибо на win/linux платформах читает счетчик секунд BIOS. Добавлено через 21 секунду но time(NULL) возвращает секунды. |
| Автор: borisbn 4.2.2012, 10:02 | ||||
Добавлено через 1 минуту и 49 секунд Есть ли таймер QuickTime - не знаю |
| Автор: gpepsi 4.2.2012, 12:04 | ||
а сбросить его можно, чтоб elapsed возвращал 0 ? |
| Автор: ksili 4.2.2012, 13:47 | ||
Зачем счётчик? Смотришь системное время в начале. Смотришь в конце. Вычисляешь разницу. Всё. |
| Автор: gpepsi 4.2.2012, 20:55 | ||
то, что можно это сделать - понятно. Но если есть готовое решение, то зачем заморачиваться... |
| Автор: boostcoder 4.2.2012, 21:35 |
| для тех кого гугл забанил: http://www.boost.org/doc/libs/1_48_0/libs/timer/doc/index.html зы все же была надежда, что кто-то воспользуется гуглом) |
| Автор: tzirechnoy 4.2.2012, 22:06 |
| У человека Qt. Зачем ему твой тупой, жырный буст с кривым синтаксисом? |
| Автор: gpepsi 4.2.2012, 22:14 | ||
а что-то я там ничего похожего для себя не нашел... |
| Автор: boostcoder 4.2.2012, 23:33 |
не мой. в разы меньше кути. во первых - у тебя просто руки/моцг кривые. во вторых - синтаксис плюсовый, как и в куте. Добавлено @ 23:35 попробуй почитать. |
| Автор: Sahab 4.2.2012, 23:51 | ||
мдя... судя по всему вы на куте "кодите" а не на плюсах... пичалько) |
| Автор: boostcoder 4.2.2012, 23:56 |
по моему, это стандартно, для 90% кутешников |
| Автор: Sahab 5.2.2012, 00:10 | ||
а это типа не готовое решение?) нужно тонны кода написать?) Добавлено через 1 минуту и 30 секунд ну я не стал бы так радикально, на этом форуме много людей которые используют Qt а не "кодят" на ней... хотя некая закономерность все же есть. |
| Автор: tzirechnoy 5.2.2012, 09:41 | ||||||
Вы, Рабинович, либо ник смените, либо не выступайте так.
Ну да конечно. 0_ilan@nb /home/ilan%apt-cache show libqt4-dev Package: libqt4-dev Source: qt4-x11 Version: 4:4.7.4-2 Installed-Size: 16922 0_ilan@nb /home/ilan%apt-cache show libboost1.46-dev Package: libboost1.46-dev Source: boost1.46 Version: 1.46.1-8 Installed-Size: 56670 При этом это только ядро в обоих случаях -- и добавок у буста на глаз заметно большэ.
Я про собственно бустовские традицыи. |
| Автор: borisbn 5.2.2012, 10:31 |
| tzirechnoy, boostcoder, вот меня всегда интересовал вопрос: вы что, в рюкзаке на себе носите boost или Qt ? Какая разница, сколько места занимает библиотека ? Я ещё понимаю неприязнь framework'ов (.Net, Java, etc.), но тут... набор исходников, lib'ин и dll... P.S. Упомянутые господа - не ссорьтесь. Набор исходников, lib'ин и dll того не стОят |
| Автор: boostcoder 5.2.2012, 10:44 |
забавная аргументация. погугли, что-ли.. хз что там за вывод у тебя, но он явно лжет ;) >du /usr/local/lib/libboost* -ch >29M total http://sourceforge.net/projects/boost/files/boost/1.48.0/boost_1_48_0.tar.gz/download: 58.7 MB >du /usr/lib/i386-linux-gnu/libQt* -ch >65M total ftp://ftp.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.8.0.tar.gz: 228 MB так что я хз о чем ты... какие традиции? как может быть виноват инструмент в том, что ты им пользоваться не умеешь? Добавлено @ 10:45 borisbn, объем библиотеки меня не заботит, в нынешнее-то время. я просто ответил. а вообще, не переношу пустозвонов и трепло. |
| Автор: Sahab 5.2.2012, 17:52 | ||||
А вы всю кутю с собой таскаете? Не смешите... А давайте померяем приложение Qt с сетевой частью (консольное) и с boost.asio? Какая разница? То-то. А вообще по поводу размера - согласен с постом borisbn. щитовынесете? А Вы вообще в курсе что часть буста вошла в стандарт, а некоторая часть чуть ли не скопипасчена в gcc? И по вашему это делают люди которые любят
или у них просто моцка поболее чем у тех кто не умеет его готовить? |
| Автор: _GRIN_ 6.2.2012, 18:29 | ||
Для систем с ntp-серверами, где автомотическая подводка времени, данное решение будет не правильным. Правильное решение - QElapsedTimer - или boost-овский вариант - но, признаться я boost не знаю и ничего сказать не смогу. |
| Автор: gpepsi 7.2.2012, 10:27 |
я что-то не нашел как его сбросить |
| Автор: Sahab 7.2.2012, 11:04 |
| qint64 QElapsedTimer::restart () |
| Автор: boostcoder 7.2.2012, 12:14 |
:facepalm |
| Автор: gpepsi 8.2.2012, 09:40 |
restart опять пачнет отсчет, а мне этого не нужно. Поясню, что мне нужно. Пусть есть процесс. Изначально elapsed должен отдавать 0. Запускаю таймер - в процессе его работы я должен получать время, сколько он проработал. Останавливаю процесс. Теперь таймер должен остановиться и показывать время, которое процесс отработал. Если запустить его заново, то время должно сброситься (restart) и начать осчет заново. Вот остановить таймер вроде нельзя. |
| Автор: _GRIN_ 8.2.2012, 10:05 | ||||||
Вот тебе обёртка
Вот проверочный код
вот лог
|
| Автор: gpepsi 8.2.2012, 10:08 |
после stop он должен возвращать время последней работы |
| Автор: _GRIN_ 8.2.2012, 10:10 | ||||
Поправил
вывод
Проверочный код тот же |
| Автор: math64 8.2.2012, 10:15 |
Так запомни его в поле класса и возвращай его из поля класса, когда таймер остановлен. При запуске таймера можно сбрасывать запомненное значение При остановке таймера можно сложить прошедшеее время с запомненным, а можно не складывать А можно хранить отдельно время последнего запуска и суммарное время. |
| Автор: bsa 8.2.2012, 10:27 |
| gpepsi, а зачем останавливать? просто возьми текущее время и все. Открою тебе секрет, он не считает. Если упрощенно, то он запоминает при запуске текущее системное время, а потом при каждом запросе делает вычитание его из текущего. Поэтому "остановить" его нельзя. |
| Автор: boostcoder 8.2.2012, 10:44 | ||
а разве кто-то думал иначе? оО сплошной facepalm... |