LINUX.ORG.RU
ФорумTalks

Предлагаю провести тесты Qt4 vs. GTK+


0

0

Предистория http://www.linux.org.ru/view-message.jsp?msgid=2465889&lastmod=1201957068728

Тесты очень простые. Берём виджет размера 500х500, рисуем на нём разные фигуры/линии в количествах несколько сотен с включённым АА. Делаем это в Qt4 и Cairo. Замеряем время. И навеки веков заканчиваем холивар :)

Идёт?

★★

тестирование скорости рисования примитивов никак не покажет скорость реально ощутимую пользователем.

для правильного тестирования необходимо внутри кода тулкитов поставить таймер на места "отрисовка начата"/"отрисовка закончена". после этого провести тест на однократную отрисовку окна с примерно одинаковым набором виджетов, для разных тулкитов. Потом тест на отрисовку только какого-нибудь блока окна, что-бы оценить эффективность выборочной перерисовки, и.т.п. очень геморное непростое занятие. никто не будет делать.

zort
()

QT - говно, GTK - говно, остально все - говно. Анонимусы тоже говно. Винда рулит.

капча: winers

anonymous
()
Ответ на: комментарий от zort

нет, почему же, если примитивы отрисовывать по одному за раз и замерять время, то что-то это даст. Во всяком случае приблизительную оценку скорости получим.

amoralyrr ★☆
()
Ответ на: комментарий от amoralyrr

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

тем более тулкиты в основном делают "bitblt" а не примитивы рисуют, да и скорость таких базовых операций для обоих тулкитов должна быть одинаковой, ибо за них отвечают сами иксы(xrender,xft)

zort
()
Ответ на: комментарий от desruptor

>Первый тролль дивизии?

Хочешь чтоб и тебя какашками закидали?

// VisualBasic Rulezzz

anonymous
()
Ответ на: комментарий от zort

>ничего мы не получим. скорость отрисовки окна зависит от буферов, обхода виджетов, свитчинга сообщений.. итп

>тем более тулкиты в основном делают "bitblt" а не примитивы рисуют, да и скорость таких базовых операций для обоих тулкитов должна быть одинаковой, ибо за них отвечают сами иксы(xrender,xft)

ничего не поделаешь. окошки кутышных приложений быстрее отрисовываются.

anonymous
()
Ответ на: комментарий от anonymous

у кого как. У меня ровно наоборот. Быстрее всего отрисовывается etk, на втором месте gtk, на третьем qt. Остальное не пробовал.

amoralyrr ★☆
()
Ответ на: комментарий от amoralyrr

конечно не имеет.

для чистоты эксперимента ещё необходимо что бы "темовые движки", рисовали элемент одним и тем же набором операций. Что бы небыло так, что в gtk происходит одноцветное заполнение, а в qt градиент надо рассчитывать под размер виджета.

zort
()
Ответ на: комментарий от amoralyrr

По идее надо еще выполнять около 1000+ раз каждый тест, иначе смысла нет, и брать среднее и без первого варианта.

desruptor
()

А почему никто не пишет на чистом Xlib? Тогда бы не было споров вокруг библиотек.

hibou ★★★★★
()
Ответ на: комментарий от hibou

> А почему никто не пишет на чистом Xlib?

Сложно и несоизмеримо долго. Ровно как и писать на ассемблере.

gaa ★★
()

"...тесты Qt4 vs. GTK+" у вас товарищ, быдлоподход. Так как постановка вопроса предполагает написать все на C++ в связи с тем что QT нормально не тянет другие языки.

А писать GUI на C++ вообще верх идиотима. Это оправдано только в том случае когда у вас для программы _обязательное_ требование все написать на одном языке, сложность написания многочисленных отдельных кусков программы на языках более высокого уровня чем кросспортабельный ассемблер с классами, и при том с компиляцией этого одного языка в бинарь.

Подобные приложения встречаются менее часто чем вам хотелось бы. Так как для подавляющего большинства приложений можно естественным образом разделить движок для обработки данных и ГУИ. И сам движок для обработки данных, кстати , не во всем программах должен состоять из одного куска написанного на одном языке.

kernel ★★☆
()

Так я не понял, есть желающие мериться пиписьками со стороны гтк-шников? 
Если да, то давайте обсудим, что будем рисовать и в каких количествах. 
Каркас Qt-отрисовки примерно такой:

void test::paintEvent(QPaintEvent *event)
{
	QTime time = QTime::currentTime();
	QTime time_temp;

	//paint
	QPainter painter(this);
	for(int i = 0; i < 1000; i++)
	{
		painter.drawLine(0, 0, 500, 500);
	}

	time_temp.start();
	qDebug() << time.msecsTo(time_temp) << "msecs";
}

troorl ★★
() автор топика
Ответ на: комментарий от hibou

>на чистом win32 тоже, верно, мало кто пишет. MFC или VCL или вот последнее что появилось - .Net

На чистом win32 я когда-то писал для школы мелкие поделочки. :) MFC ужасна.

Demon37 ★★★★
()
Ответ на: комментарий от Demon37

> Это еще почему? O_o

Потому что он идиот :)

troorl ★★
() автор топика
Ответ на: комментарий от troorl

>Так я не понял, есть желающие мериться пиписьками со стороны гтк-шников?

>Если да, то давайте обсудим, что будем рисовать и в каких количествах.

>Каркас Qt-отрисовки примерно такой:

А есть ли смысл тестировать отрисовку прямых? Если уж измерять, то скорость отрисовки N-ого числа виджетов.

Demon37 ★★★★
()
Ответ на: комментарий от Demon37

> Это еще почему? O_o

потому что ГУИ проще и быстрее писать на языках типа Питона, Перла и иже с ними. На С++ их пишут программисты в тайне считающие плюсы "серебряной пулей". Эти программисты вообще все пишут на плюсах.

kernel ★★☆
()
Ответ на: комментарий от troorl

у в общем вот, более крисивый каркас. 
Кто там на ГТК кодит - давайте что-то подобное и будем мерить :)

void test::paintEvent(QPaintEvent *event)
{
	QTime time = QTime::currentTime();

	QPainter painter(this);
	for(int i = 0; i < 10000; i++)
	{
		//рисуем что-нибудь
	}

	qDebug() << time.msecsTo(QTime::currentTime()) << "msecs";
}

troorl ★★
() автор топика
Ответ на: комментарий от troorl

>Ваши предложения?

Расслабиться и получать удовольствие.

Флеймообразующая разница между qt и gtk лежит уж точно не в области быстродействия.

Это вопрос философии и идеологии.

Кто-то любит C++ и препроцессоры, кто-то считает, что если тулкит нельзя использовать из под чистого C, то он бесполезен.

Кому-то нравится LGPL, кто-то в восторге от двойного лицензирования.

Некоторые любят быть в большинстве, кому-то ближе флёр нестандартности.

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

Но этот разговор вне сферы рациональных обсуждений.

Флейм не остановить.

Davidov ★★★★
()
Ответ на: комментарий от Demon37

> А есть ли смысл тестировать отрисовку прямых? Если уж измерять, то скорость отрисовки N-ого числа виджетов.

Виджеты рисуются в paintEvent. А _что_ рисовать - это уже другое дело. Предлагайте.

troorl ★★
() автор топика
Ответ на: комментарий от troorl

> Дальше не читал. Лечись.

Человек не дочитывающий постинги до конца в принципе не способен иметь разумное мнение ни по одному вопросу. :)

kernel ★★☆
()
Ответ на: комментарий от kernel

>потому что ГУИ проще и быстрее писать на языках типа Питона, Перла и иже с ними. На С++ их пишут программисты в тайне считающие плюсы "серебряной пулей". Эти программисты вообще все пишут на плюсах.

Мсье не слыхал, что для QT можно писать еще как минимум на питоне и джаве?

P.S. Пишу на C++ и не только, плюсы панацеей не считаю. Я исключение из перечисленных тобой правил? :)

Demon37 ★★★★
()
Ответ на: комментарий от Demon37

Питон же вроде не компилируемый язык. Джава - шут ее разберет! Тут мне в прошлом году доказывали что там типа реалтайм компилятор... только как это все с qt4 работает?

Кароч, не мешайте всё в одну кучу. Мухи отдельно, котлеты отдельно.

hibou ★★★★★
()
Ответ на: комментарий от hibou

>Питон же вроде не компилируемый язык. Джава - шут ее разберет! Тут мне в прошлом году доказывали что там типа реалтайм компилятор... только как это все с qt4 работает?

>Кароч, не мешайте всё в одну кучу. Мухи отдельно, котлеты отдельно.

Предлагаю внимательно прочитать, что утверждал товарищ со славным ником "kernel". А утверждал он, что "писать GUI на C++ - верх идиотизма. GUI на питоне кошернее". Вот я и отметил, что есть PyQT.

Demon37 ★★★★
()
Ответ на: комментарий от hibou

>Питон же вроде не компилируемый язык.

В наше время некомпилируемых языков почти не осталось. bash, javascript... навскидку и не назову больше :)

KRoN73 ★★★★★
()
Ответ на: комментарий от hibou

> на чистом win32 тоже, верно, мало кто пишет. MFC или VCL или вот последнее что появилось - .Net

Вот-вот. Все мегатулкиты растут из сложностей программирования интерфейса пользователя.

И turbo vision(если помнит кто-то такую борландовскую поделку), и VCL, и MFC, и GTK, и Qt, и (dot)Net начали своё развитие как библиотеки пользовательского интерфейса. Потом из них не стала претендовать на всеобемлющность только turbo vision, ибо сдохла.

И авторы всего(ну кроме гтк, ибо не проприетарщина) чётко понимают, что разбей они этот комбайн на мелкие куски, как сразу потеряют тех своих клиентов, которые пришли на мышкоформопостроитель, но за счёт формочек втянулись и в остальную "платформу".

gaa ★★
()
Ответ на: комментарий от hibou

>Джава - шут ее разберет!

Исходный текст сначала переводится в т.н. байт-код. А далее по мере надобности его выполняет виртуальная джава-машина.

Demon37 ★★★★
()
Ответ на: комментарий от Demon37

>Мсье не слыхал, что для QT можно писать еще как минимум на питоне и
>джаве?

Слыхал, слыхал. Мьсе так же слыхал что метод каковым это было достигнуто называют немного извращенным все известные мне разумные люди.
А еще мсье помнит времена когда под GTk были практически все доступные языки, а под QT были только Питон(ИМХО) и тот с большой натяжкой.

Так как GTk изначально , во всяком случае после его выхода на сцену тулкитов для всех а не только для gimp, имел требованием language neutrality. Для QT же каждый безумный фанат кричал что для QT НЕ НУЖНЫ биндинги под другие языки, а если и нужны то только извращенцам. Потому что C++ наше все.

В те времена с ними было сложно спорить - так как C++ был языком N1
для Ъ . Однако потом C++ уполз в нишу побитый Явой. А фонаты остались.

> P.S. Пишу на C++ и не только, плюсы панацеей не считаю Я исключение
> из перечисленных тобой правил? :)

А много всего вы пишите НЕ на плюсах ?) Так, к слову ? :)

kernel ★★☆
()
Ответ на: комментарий от gaa

>(ну кроме гтк, ибо не проприетарщина)

QT тоже не проприетарщина.

>которые пришли на мышкоформопостроитель, но за счёт формочек втянулись и в остальную "платформу".

"мышкоформопостроителями" пользуются и GTK-шники.

Demon37 ★★★★
()
Ответ на: комментарий от gaa

>И авторы всего(ну кроме гтк, ибо не проприетарщина) чётко понимают, что
> разбей они этот комбайн на мелкие куски, как сразу потеряют тех своих
>клиентов, которые пришли на мышкоформопостроитель, но за счёт формочек
>тянулись и в остальную "платформу".

+1024. Комбайн - вот имя QT. И соответственно QT хорош как комбайн для плюсистов. В чем его полезность и нужность никто не отрицает. И когда польза от применения "только плюсы + большой комбайн" считается определяющей - чтож , вот оно и место QT.

И за это я люблю GTk - она такой подход не навязывает.

kernel ★★☆
()
Ответ на: комментарий от Demon37

> "мышкоформопостроителями" пользуются и GTK-шники.

"мышкоформопостроители" в GTK делают только то что должны. А не втягивают программера на остальную платформу.

Что не исключает в дальнейшем появления GTk -based платформ/комбайнов.

kernel ★★☆
()
Ответ на: комментарий от kernel

> Слыхал, слыхал. Мьсе так же слыхал что метод каковым это было достигнуто называют немного извращенным все известные мне разумные люди.

О боже, выносите... Мусье сам то понимает, о чём ведёт речь или его мнение заменили "известные ему умные люди"? Может мусье сформулировать, в чём состоит извращение создания биндингов Qt для Pyhton?

troorl ★★
() автор топика
Ответ на: комментарий от kernel

>метод каковым это было достигнуто называют немного извращенным все известные мне разумные люди.

В данном случае неважно как цель была достигнута.

>А еще мсье помнит времена когда под GTk были практически все доступные языки, а под QT были только Питон(ИМХО) и тот с большой натяжкой.

Время идет, все меняется :)

>Для QT же каждый безумный фанат кричал что для QT НЕ НУЖНЫ биндинги под другие языки, а если и нужны то только извращенцам. Потому что C++ наше все.

Не все, пишущие для QT на С++ - фанатики, не все фанатики пишут для QT на С++ (С) :)

>Однако потом C++ уполз в нишу побитый Явой

И где же обилие аппликух на "джаве-победителе" вне ынтырпрайз-сектора? :)

>А много всего вы пишите НЕ на плюсах ?) Так, к слову ? :)

"Много" - понятие растяжимое. Скажем так, C++ я отдаю предпочтение, но не считаю панацеей. Каждой задаче - свои средства :)

Demon37 ★★★★
()
Ответ на: комментарий от kernel

Глянул, в Gentoo следующие пакеты есть:

dev-java/qtjambi
dev-perl/PerlQt
dev-php5/php-qt
dev-python/PyQt
dev-python/PyQt4
dev-ruby/qt4-qtruby

и

dev-ada/gtkada
dev-dotnet/gtk-sharp
dev-haskell/gtk2hs
dev-java/libgtk-java
dev-lisp/cl-lambda-gtk
dev-ml/lablgtk
dev-perl/gtk2-perl
dev-php5/php-gtk
dev-python/pygtk
dev-ruby/ruby-gtk2
dev-scheme/gauche-gtk
dev-tcltk/tcl-gtk

...

В общем, соотношение наглядно :)

KRoN73 ★★★★★
()
Ответ на: комментарий от Demon37

>> (ну кроме гтк, ибо не проприетарщина)

> QT тоже не проприетарщина.

Ладно, непрвильно выразился. Гтк -- разработка community, а не отдельной (коммерческой) фирмы.

>> которые пришли на мышкоформопостроитель, но за счёт формочек втянулись и в остальную "платформу".

> "мышкоформопостроителями" пользуются и GTK-шники.

Да. А потом, завязши в GObject-е, тянут глиб/гтк направо и налево.

gaa ★★
()
Ответ на: комментарий от kernel

> Комбайн - вот имя QT. ... И за это я люблю GTk - она такой подход не навязывает.

Навязывает. Как минимум GObject-ом.

gaa ★★
()
Ответ на: комментарий от kernel

>"мышкоформопостроители" в GTK делают только то что должны. А не втягивают программера на остальную платформу.

Не понимаю в чем заключается втягивание? Если мне нужно срочно спроектировать сложный интерфейс, я возьму, запущу QtDesigner и сконструирую его. Я уже втянут? :)

Demon37 ★★★★
()
Ответ на: комментарий от kernel

>> Да. А потом, завязши в GObject-е, тянут глиб/гтк направо и налево.

> Гхм, без glib'а не бывает GTk.

Да. Ещё осознайте, что других графических либ на основе glib нет. Тем самым получим, что гтк и глиб всё же связаны и сильно влияют друг на друга.

> glib это не комбайн :)

Не увлекайтесь самовнушением, это ведёт к аутизму.

gaa ★★
()
Ответ на: комментарий от kernel

> Гхм, без glib'а не бывает GTk. glib это не комбайн

Гхм, без QtCore не бывает Qt. QtCore это не комбайн

troorl ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.