Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] прожорливый таймер, подскажите, в чем проблема? 
:(
    Опции темы
CompWorm
  Дата 15.5.2009, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


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

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



в соседнем топике я писал, что обнаружил проблему с таймером.
решил сделать отдельный топик, ибо проблема с тем топиком не связана.

итак, вот такой код:
Код

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtGui/QMainWindow>

namespace Ui
{
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;

protected:
    virtual void timerEvent(QTimerEvent* e);
};

#endif // MAINWINDOW_H



Код

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    startTimer(1);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::timerEvent(QTimerEvent* e)
{
    // пустой таймер
}


под линуксом напрягает процессор до 100%  smile при этом в винде такая проблема не наблюдается.
провел эксперимент - если интервал startTimer(2) - то 50% . если более 2 миллисекунд, то все в порядке.

если кто-то сталкивался или интересовался проблемой, пожалуйста поделитесь мыслями, с чего бы пустому таймеру так грузить проц?


Это сообщение отредактировал(а) CompWorm - 15.5.2009, 21:36


--------------------
PM MAIL   Вверх
Alexeis
Дата 15.5.2009, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



1мс под виндой ток мультимедийный таймер, обычный дает 10мс, т.е. будет обманывать жестоко.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
CompWorm
Дата 15.5.2009, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


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

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



про 10мс в винде я в курсе smile  но неужели линукс выдает что-то близкое к 1 мс ? 
то есть этот таймер получается неточным, но он очень "старается" выдать, что просят smile ?


--------------------
PM MAIL   Вверх
Alexeis
Дата 15.5.2009, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



CompWorm, думаю это как раз случай насилия над кодом. У всего есть своя область применения. В винде не зря установлено 10мс тик системного таймера, можно вручную установить и 1мс, но будет хуже.  Ведь программа не монопольно владеет процессором. Ее прерывают и все, точности больше нет. В винде для мультимедийного таймера организуется высоко приоритетный поток, который "насилует" счетчик тиков проца, разумеется он сильно грузит процессор. Возможно в линуксе та же схема + накладные расходы на оболочку.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
CompWorm
Дата 15.5.2009, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


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

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



Alexeis, спасибо за ответ. 

любопытно конечно как это выглядит хотя бы логически... не совсем прозрачно, почему так резко возрастает нагрузка на 2 и на 1 мс, а не нагружается равномерно, например, постепенно возрастая от 10мс (или хотя бы от 5мс) до 1мс....

в прочем соглашусь, что полезно себя морально ограничить 10 мс.  smile 


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


Эксперт
****


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

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



CompWorm, ты лучше ограничь по смыслу. Например, нет смысла обрабатывать действия пользователя чаще раз в 100 мс... В то же время, при работе с 3D задержка менее 10 мс тоже смысла особо не имеет, так как пользователь все равно не увидит особой разницы между 60 fps, 100 fps и 200 fps...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




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


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

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