Russian Qt Forum
Ноябрь 24, 2024, 20:03 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTimer и использование процессора  (Прочитано 6240 раз)
trialuser
Гость
« : Апрель 12, 2008, 16:18 »

Получился довольно интересный результат. Это кусок кода создаёт 10 таймеров с интервалом в 1 мс. И самое главное, использование процессора в Qt3 примерно в 10 раз меньше чем в Qt4. Похоже, троллтехи опять где-то накасячили. У кого есть мысли по этому поводу, попрошу высказаться и проверить.
Информация о системе:
uname -a
Linux localhost 2.6.24.3-desktop-2mdv #1 SMP Tue Mar 4 17:21:53 MSK 2008 i686 Intel(R) Pentium(R) Dual CPU E2160 @ 1.80GHz GNU/Linux

версии Qt: 3.3.8 и 4.3.4 соответственно.

for(int i = 0; i < 10; ++i)
{
QTimer *timer = new QTimer(this);
timer->start(30+i);
}
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #1 : Апрель 12, 2008, 18:38 »

Получился довольно интересный результат. Это кусок кода создаёт 10 таймеров с интервалом в 1 мс. И самое главное, использование процессора в Qt3 примерно в 10 раз меньше чем в Qt4. Похоже, троллтехи опять где-то накасячили. У кого есть мысли по этому поводу, попрошу высказаться и проверить.
Информация о системе:
uname -a
Linux localhost 2.6.24.3-desktop-2mdv #1 SMP Tue Mar 4 17:21:53 MSK 2008 i686 Intel(R) Pentium(R) Dual CPU E2160 @ 1.80GHz GNU/Linux

версии Qt: 3.3.8 и 4.3.4 соответственно.

for(int i = 0; i < 10; ++i)
{
QTimer *timer = new QTimer(this);
timer->start(30+i);
}


Это попытка удовлетворить свою любознательность?
Какая может быть нужда в 10 таймерах?
Может лучше 1000 запустить?
Записан
trialuser
Гость
« Ответ #2 : Апрель 12, 2008, 19:10 »

Причём тут 1000 таймеров? Я привёл пример немного утрированный, да 10 таймеров - это не так уже и много. На самом деле у меня в программе 4 таймера и пользователи жалуются на использование процессора. Особенно заметно на слабых машинах. Например на duron 800 3-и таймера потребляют 40%. Причём та же программа но собранная с qt3 потребляет около 1-2%
Записан
ритт
Гость
« Ответ #3 : Апрель 12, 2008, 19:35 »

собрал твой пример - ничего подозрительного не вижу
создал 1000 таймеров - нагрузка 4% на протяжении ~0.1с

ищи тараканов в своём коде
Записан
trialuser
Гость
« Ответ #4 : Апрель 12, 2008, 20:24 »

собрал твой пример - ничего подозрительного не вижу
создал 1000 таймеров - нагрузка 4% на протяжении ~0.1с

ищи тараканов в своём коде

Ну и какие тут быть тараканы в 5 строчках кода? Лучше напиши свои версии gcc, glibc, kernel. Может быть удастся выявить закономерность...
Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #5 : Апрель 12, 2008, 21:46 »

как вариант, собирал с GLIB event loop GLIB event loop?
Записан
ритт
Гость
« Ответ #6 : Апрель 12, 2008, 22:03 »

Ну и какие тут быть тараканы в 5 строчках кода? Лучше напиши свои версии gcc, glibc, kernel. Может быть удастся выявить закономерность...

я имел в виду - не в этих пяти строчках кода, а в тех, что используют таймеры
тестил под вендой. линуха сейчас недоступна
Записан
trialuser
Гость
« Ответ #7 : Апрель 12, 2008, 22:58 »

как вариант, собирал с GLIB event loop GLIB event loop?

А вот это уже интересно. Qt собрана с glib, т.к. этот glib есть в зависимостях. А вот если его отключить (export QT_NO_GLIB=1), то использование процессора заметно снижается. Так что в качестве временного решения сойдёт. Потом попробую его обновить. Спасибо за подсказку.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.073 секунд. Запросов: 23.