Russian Qt Forum

Qt => Model-View (MV) => Тема начата: mozgofil от Июль 10, 2009, 19:11



Название: скорость отрисовки при использовании MVC
Отправлено: mozgofil от Июль 10, 2009, 19:11
 :o
просто непонимаю почему даже простейшие MVC из примеров притормаживают даже на
двухядерной машине. Особенно при resize. Вобще даже в VC6 при resize когда тянешь границу панельки отрисовывается только граница, а не сама панелька.
Какие есть способы ускорить?


Название: Re: скорость отрисовки при использовании MVC
Отправлено: lit-uriy от Июль 10, 2009, 20:49
какая панелька?


Название: Re: скорость отрисовки при использовании MVC
Отправлено: mozgofil от Июль 10, 2009, 20:59
какая панелька?
да любая, например TreeView


Название: Re: скорость отрисовки при использовании MVC
Отправлено: spectre71 от Июль 10, 2009, 23:36
:o
просто непонимаю почему даже простейшие MVC из примеров притормаживают даже на
двухядерной машине. Особенно при resize. Вобще даже в VC6 при resize когда тянешь границу панельки отрисовывается только граница, а не сама панелька.
Какие есть способы ускорить?
Какая панелька?
Какая еще граница панельки??


Название: Re: скорость отрисовки при использовании MVC
Отправлено: lit-uriy от Июль 10, 2009, 23:43
mozgofil, ты имеешь в виду виджет?


Название: Re: скорость отрисовки при использовании MVC
Отправлено: pastor от Июль 10, 2009, 23:44
Мне так что-то кажется, что "панелька" это окно, а "граница панельки" это граница окна. Могу ошибаться )) Телепаты в отпуске  ;D


Название: Re: скорость отрисовки при использовании MVC
Отправлено: mozgofil от Июль 11, 2009, 06:23
Не думал, что вопрос окажется таким неоднозначным :)
 Я имел ввиду "окно" или класс производный от QWidget, а ещё точнее
класс, производный от QAbstractItemView (т.е. его функционирование [скорость])


Название: Re: скорость отрисовки при использовании MVC
Отправлено: spectre71 от Июль 11, 2009, 08:10
Не думал, что вопрос окажется таким неоднозначным :)
 Я имел ввиду "окно" или класс производный от QWidget, а ещё точнее
класс, производный от QAbstractItemView (т.е. его функционирование [скорость])
Тебе же написали, что телепатов здесь нет.
За что ты там таскаешь. И вообще что за задача, какие данные,...


Название: Re: скорость отрисовки при использовании MVC
Отправлено: mozgofil от Июль 11, 2009, 09:19
Не думал, что вопрос окажется таким неоднозначным :)
 Я имел ввиду "окно" или класс производный от QWidget, а ещё точнее
класс, производный от QAbstractItemView (т.е. его функционирование [скорость])
Тебе же написали, что телепатов здесь нет.
За что ты там таскаешь. И вообще что за задача, какие данные,...
...ну вот опять... :P

В упрощённом варианте:
собираем приложение из примера
Код
C++ (Qt)
#include <QtGui>
int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
   QDirModel model;
   QTreeView tree;
   tree.setModel(&model);
 
   // Demonstrating look and feel features
   tree.setAnimated(false);
   tree.setIndentation(20);
   tree.setSortingEnabled(true);
 
   tree.setWindowTitle(QObject::tr("Dir View"));
   tree.resize(640, 480);
   tree.show();
   return app.exec();
}
 
почему жутко тормозит при изменении мышкой размеров окна?
и как ускорить?
принципиальный вопрос


Название: Re: скорость отрисовки при использовании MVC
Отправлено: spectre71 от Июль 11, 2009, 10:45
почему жутко тормозит при изменении мышкой размеров окна?
и как ускорить?
принципиальный вопрос
У тебя изменение размера окна происходит при отпускании мыши(рамочкой) или постоянное при пертаскивании?
Во втором слючае будет тормозить всегда.


Название: Re: скорость отрисовки при использовании MVC
Отправлено: mozgofil от Июль 11, 2009, 11:36
почему жутко тормозит при изменении мышкой размеров окна?
и как ускорить?
принципиальный вопрос
У тебя изменение размера окна происходит при отпускании мыши(рамочкой) или постоянное при пертаскивании?
Во втором слючае будет тормозить всегда.
постоянное


Название: Re: скорость отрисовки при использовании MVC
Отправлено: lit-uriy от Июль 11, 2009, 14:00
mozgofil, какая версия Qt?

У меня:
Qt 4.4.3
MinGW32
Win2k
тормозов, хоть сколь нибудь заметных нет.


Название: Re: скорость отрисовки при использовании MVC
Отправлено: mozgofil от Июль 11, 2009, 18:27
mozgofil, какая версия Qt?
У меня:
Qt 4.4.3
MinGW32
Win2k
тормозов, хоть сколь нибудь заметных нет.
Qt4.5 под VS. WinXPSP2
Сомниваюсь, что дело в компиляторе.
Тормозит пропорционально размерам виджета, т.е. небольшой - не тормозит.
дело не в компиляторе или машине, просто какие в принципе есть способы ускорить?
ну хотя бы чтобы при resize не отрисовывался сам виджет, а только границы?


Название: Re: скорость отрисовки при использовании MVC
Отправлено: spectre71 от Июль 11, 2009, 19:09
постоянное
Я уже писал, что в этом случае будет всегда тормозить.


Название: Re: скорость отрисовки при использовании MVC
Отправлено: ритт от Июль 12, 2009, 00:55
попробуй на снапшоте - там много оптимизаций в айтемвью


Название: Re: скорость отрисовки при использовании MVC
Отправлено: mozgofil от Июль 12, 2009, 09:49
попробуй на снапшоте - там много оптимизаций в айтемвью
а что такое "снапшот"?


Название: Re: скорость отрисовки при использовании MVC
Отправлено: lit-uriy от Июль 12, 2009, 09:58
>>а что такое "снапшот"?
срез текущего состояния разработки, от англ. "snapshot" - букв. "снимок"


Название: Re: скорость отрисовки при использовании MVC
Отправлено: kamre от Июль 12, 2009, 11:11
Я уже писал, что в этом случае будет всегда тормозить.

Чисто виндовые приложения вроде Explorer, mTorrent не тормозят же при ресайзе, хотя там мерцание заметно. Да и Qt в винде особо не томозит. Вот в линуксе с ресайзом вообще ахтунг, кривой Xorg с кривыми видеодрайверами и Compiz любую видеокарту умеют затормозить на ресайзе окошек.

А по теме было бы интересно узнать конфигурацию компа у автора, включая разрешение на мониторе. У меня на E7200 и 9600GT в winXP ресайз для "Dir View" просто не так плавно работает, когда окошко становится больше половины экрана в 1680x1050. В принципе не так уж и критично, не сказать, что прям тормозит.
 


Название: Re: скорость отрисовки при использовании MVC
Отправлено: mozgofil от Июль 12, 2009, 18:40
Чисто виндовые приложения вроде Explorer, mTorrent не тормозят же при ресайзе, хотя там мерцание заметно. Да и Qt в винде особо не томозит. Вот в линуксе с ресайзом вообще ахтунг, кривой Xorg с кривыми видеодрайверами и Compiz любую видеокарту умеют затормозить на ресайзе окошек.
А по теме было бы интересно узнать конфигурацию компа у автора, включая разрешение на мониторе. У меня на E7200 и 9600GT в winXP ресайз для "Dir View" просто не так плавно работает, когда окошко становится больше половины экрана в 1680x1050. В принципе не так уж и критично, не сказать, что прям тормозит.
пробовал на 2 машинах:
1)celeron 1,8GHz  c GeForce 4 mx440
2)2ядерная 1,6GHz  с какой-то встроеной Intell'овской видяхой
тормоза видны даже на простеньком дереве для любого Qt-шного приложения. QtCreator тоже тормозит, так что не в компиляторе дело.
А по сравнению с Linux - имхо, для Qt-шных приложений скорость практически одинаковая. Qt на Linux работает относительно шустро(не так, конечно, как KDE 3.*) .

кстати, нашёл статью по теме:
http://www.opennet.ru/docs/RUS/qt3_prog/x2947.html



Название: Re: скорость отрисовки при использовании MVC
Отправлено: mozgofil от Июль 12, 2009, 18:55
>>а что такое "снапшот"?
срез текущего состояния разработки, от англ. "snapshot" - букв. "снимок"
Что-то я не в теме совсем. О чём речь? ???


Название: Re: скорость отрисовки при использовании MVC
Отправлено: Karl-Philipp от Июль 12, 2009, 19:04
>>а что такое "снапшот"?
срез текущего состояния разработки, от англ. "snapshot" - букв. "снимок"
Что-то я не в теме совсем. О чём речь? ???
Читать здесь:
http://www.qtsoftware.com/developer/qt-snapshots


Название: Re: скорость отрисовки при использовании MVC
Отправлено: mozgofil от Июль 12, 2009, 20:54
Читать здесь:
http://www.qtsoftware.com/developer/qt-snapshots
ок, спасибо, заценю.


Название: Re: скорость отрисовки при использовании MVC
Отправлено: mozgofil от Июль 16, 2009, 18:34
Читать здесь:
http://www.qtsoftware.com/developer/qt-snapshots
ок, спасибо, заценю.
нет разницы.
У меня возник вопрос :
рассм. код из примера :
Код
C++ (Qt)
....
QModelIndex CTreeModel::index(int row, int column, const QModelIndex &parent) const
{
if (!hasIndex(row, column, parent))
return QModelIndex();
......................
......................
return createIndex(row, column, ....);
}
 
зачем при каждом вызове index() создаются индексы?
разве они не должны быть захэшированы?


Название: Re: скорость отрисовки при использовании MVC
Отправлено: lit-uriy от Июль 16, 2009, 18:41
>>разве они не должны быть захэшированы?
что значит захэшированы?


Название: Re: скорость отрисовки при использовании MVC
Отправлено: denka от Июль 16, 2009, 18:57
Нет не должны:

Цитировать
Note: Model indexes should be used immediately and then discarded. You should not rely on indexes to remain valid after calling model functions that change the structure of the model or delete items. If you need to keep a model index over time use a QPersistentModelIndex.


Название: Re: скорость отрисовки при использовании MVC
Отправлено: mozgofil от Июль 16, 2009, 19:09
Нет не должны:

Цитировать
Note: Model indexes should be used immediately and then discarded. You should not rely on indexes to remain valid after calling model functions that change the structure of the model or delete items. If you need to keep a model index over time use a QPersistentModelIndex.
ок, спасибо, заценим