LINUX.ORG.RU

Сравнение производительности Qt и Cairo


2

0

Зак Русин провел сравнение производительности векторной графики в Qt и Cairo. Тест состоит из рендеринга трех сложных полигонов: text path, маленький полигон с большим количеством вершин на одной линии, огромный полигон с количеством вершин порядка 100000.

Измерялось количество кадров в секунду, использовались версии Cairo 1.2.5 (XRender и Glitz), Amanith из svn, Qt 4.3 (XRender и OpenGL) на Pentium4 3.2ГГц, 1Гб, NVIDIA 6600 с драйвером 1.0-9625.

Все тесты использовали антиалиасинг, и были предприняты усилия, чтобы поставить библиотеки в равные условия. Результаты очень интересны:

* Qt быстрее Cairo в XRender в 5-7 раз
* Qt(OpenGL) быстрее Qt(XRender) в 5-7 раз, но упирается в производительность GPU при 80000+ вершин
* Cairo(Glitz) показывает одинаковую производительность с Cairo(XRender)
* Ни Amanith, ни Cairo(XRender) не могут справится с последним полигоном в 100000 вершин.
* С большим полигоном Cairo(Glitz) отображает 0.2 кадра в секунду, а Qt переваливает за 10 fps.
* Qt(XRender) на порядок превосходит по производительности и Cairo(Glitz), и Amanith, хотя последние работают с OpenGL ускорением, а первый без него.


Выводы: Qt на голову выше других библиотек, а в OpenGL настолько быстр, что сравнивать с чем либо ещё просто нечестно.


PS от автора новости: Остается надеяться, что OpenSource позволит авторам Cairo "подсмотреть" построение тесселятора и рендерера, чтобы сократить разрыв до приемлемых значений.

>>> Подробности

★★★★★

Проверено: Shaman007 ()

Ответ на: комментарий от svu

А насколько глубоко cairo врос в gtk? Я, вообще-то, считал, что отрисовка виджетов в gtk всё еще идет через gdk. И каким образом результаты теста можно проецировать на скорость gtk в целом, мне не совсем понятно.

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

> Чем же вам C++ не угодил? Отличный язык, чуть повышенные требования к оперативной памяти, зато наследование, полиморфизм и перезагрузка операторов и функций (в особенности) очень облегчают жизнь и щадят мозг (в плане запоминания лишней не нужной информации).

все-таки C++ предъявляет к уровню развития разработчика существенно более жесткие требования нежели C. если плохой программист на C - это еще не так страшно, то для C++ это как обезьяна с гранатой.

// wbr

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

> что вполне естественно для компании, которая в первую очередь нацелена на конечный продукт и его сопровождение.

Само собой. Именно это и называется vendor lock-in. И за это мы любим одну маленькую компанию из Редмонда.

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

"Логическая связка отсутствует" (с)

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

Просто напишу +1е6 - чтобы не развивать флейм в эту сторону.

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

> Извините, но если сам факт существования freedesktop.org для Вас не является таким шагом - то я большего предложить не смогу.

ну допустим freedesktop существует, однако в gtk приложениях даже под оффотпиком я вижу обратный и непривычный порядок кнопок, отсутствие обратной совместимости в dbus и собственно его порта в другие ОС. Т.е. они точно также варятся в своем соку, конечно отдавая результаты под более демократичной лицензией, но качество этих результатов мы видим из тех же тестов.

> Что предоставил коммюнити Троллтех - из того, что можно было бы использовать вне стека, основанного на Куте?

а коммьюнити от трольтехов ничего не надо, они всеравно своих стандартов наизобретают. Трольтехи не будут отдавать свои разработки под BSD или LGPL и это вполне справедливо.

Syncro ★★★★★
()

Stop ! Qt!=Kdelibs,Gtk!=gnomelibs,Gtk!=Cairo сравнивают Cairo & Qt.

Уважаю qt, но меня очень раздражает, что qt вобрала в себя всё от string,io,window до ftp,opengl. Чем-то напоминает microsoft а не unix-way. Не люблю gtk за C и отрисовку окон, но уважаю за то что там для отдельной задачи отдельная либа.

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

Они под gdk подкладывают каиро. Вообще, под gdk можно много чего запихать.

svu ★★★★★
()

давно было известно, что cairo - тормоз.

Подозреваю, что из-за него firefox и тормозит.

А вот это видели?

http://www.xaraxtreme.org/about/performance.html

Оцените-ка, насколько эта кайро тормознее виндозного GDI.

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

> Само собой. Именно это и называется vendor lock-in. И за это мы любим одну маленькую компанию из Редмонда.

btw отнюдь не исключаю, что приведись этой маленькой компании стартавать свое детище сегодня, она бы запросто выбрала модель open source бо прогресс не стоит на месте. а вот поменять уже сложившуюся модель им IMHO просто нереально даже технически.

// wbr

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

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

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

> однако в gtk приложениях даже под оффотпиком я вижу обратный и непривычный порядок кнопок

"В огороде бузина, в Киеве дядька", извините. Какая связь?

> отсутствие обратной совместимости в dbus

Проект на fd.o - соотв. you are mostly welcome to help. И вся команда тролтеха и КДЕ.орг тоже велкам. Это НЕ ГНОМОВСКИЙ проект.

> а коммьюнити от трольтехов ничего не надо, они всеравно своих стандартов наизобретают.

Вызывающе неверная. Хоть один прецедент был? Или троллтеху просто нечего дать коммюнити - если коммюнити не соглашается строить вне К-стека?

> Трольтехи не будут отдавать свои разработки под BSD или LGPL и это вполне справедливо.

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

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

> Уважаю qt, но меня очень раздражает, что qt вобрала в себя всё от string,io,window до ftp,opengl.

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

// wbr

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

Дада, вполне нормальная такая бизнес-модель у Тролтеха. Кто б спорил. Только не надо их считать благодетелями...

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

а qt4 разделили на библиотеки отдельно для: console, ГИП, сети, бд и тд, а то что все это Qt - спасает от страшилок программирования на c++, которыми так грозит svu: всюду подобные интерфейсы, таже завязанность на Qt дает ощущение современных ЯП: там есть типы Variant, оператор emit, итераторы. Вобщем Qt на c++ это в своем роде даже не c++, а с++^2

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

> Дада, вполне нормальная такая бизнес-модель у Тролтеха. Кто б спорил. Только не надо их считать благодетелями...

мне конечно же сложно говорить за всех, но мне нравится их продукт в первую очередь как инженерное решение + грамотная бизнес модель продвижения и разумная ценовая политика. а что они там сделали для Мира в целом или некого сообщества opensource меня это как-то мало волнует. если волнует вообще.

// wbr

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

>Т.е. сам же мужик говорит, что он брал САМУЮ ДОРОГУЮ - что совсем не значит САМУЮ ТИПИЧНУЮ задачу

Ну вообще-то для тестов это правильно.

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

> а что они там сделали для Мира в целом или некого сообщества opensource меня это как-то мало волнует

А меня таки да волнует.

А инженерное решение в виде платформообразующих библиотек на плюсах (да еще плюсах в квадрате) меня никогда не будет нравиться, извините.

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

> Ну вообще-то для тестов это правильно.

Вообще-то для тестов правильно измерять И ТО И ТО, правда?;)

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

> Т.е. проблемы плюсов тоже усилены?;)

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

// wbr

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

> А меня таки да волнует.

но даже если с такого ракурса, вы же не будете отрицать полезность KDE & K для мира opensources и его продвижения в целом? в противном случае, KDE просто не нашло бы своих поклонников и умерло не родившишь. и сидели бы сейчас все счастливо под гномом или еще чем подобным.

> А инженерное решение в виде платформообразующих библиотек на плюсах (да еще плюсах в квадрате) меня никогда не будет нравиться, извините.

ну это уже на вкус и цвет.

// wbr

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

KDE тоже изначально был студенческим проектом, и что?

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

> "В огороде бузина, в Киеве дядька", извините. Какая связь?

а я объяснил: "давайте все использовать и развивать нашу замечательную технологию, только она будет такой-то и такой-то в сделана вот таким образом"

> Это НЕ ГНОМОВСКИЙ проект.

только вот его одни гномы используют, у KDE свои технологии, у xfce - свои, e17 тоже о своем, я про другие ос не говорю уже. Некоторые вещи конечно уже стали стандартом, но с заметным скрипом и только самое необходимое

> Или троллтеху просто нечего дать коммюнити - если коммюнити не соглашается строить вне К-стека?

а вы сравните богатство решениями Qt и туевой кучи решений противоположной линии фронта:)

> Их право. Так же как право всякого вендора стараться закабалить независимых разработчиков.

что-то я не улавливаю где тут кабала: с точки зрения лицензии - разрабатывайте под GPL и будет вам свободно, с точки зрения завязанности на себя тоже прояснили нет завязанности на qt - имеем страшный зоопарк отсталых технологий, код смотреть и переписывыть никто не запрещает. Разве отсутствие обратной совместимости не является более жесткой кабалой для независимости независимого разработчика ?

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

>Уважаю qt, но меня очень раздражает, что qt вобрала в себя всё от string,io,window до ftp,opengl.

Начиная с 4-й версии ftp находится в модуле QtNetwork, OpenGL в модуле QtOpenGL, вся гуйня в QtGui, строки в QtCore.... не нужен гуй --- не линкуем либу, не нужна сеть --- то же самое.

Зато если нужно, то пишем, используем, а потом спокойно собираем под любой платформой. Так что Вам не нравится-то?

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

>Т.е. проблемы плюсов тоже усилены?;)

Кстати, кое-какие проблемы там не то что усилены, а наоборот, решены. К примеру, автоматическое удаление дочерних объектов ;)

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

> Это данные (геометрия многогранников), а не код. Кода там нет - одно размахивание руками и красивые картинки.

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

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от baka-kun

> Самый простой полигон -- 11 fps Cairo, 76 fps Qt, 487 fps Qt(GL).

Ну-ну, как назвать человека, пишущего вот такой код для
прорисовки каждого фрейма?

static void                                                                                                                                                                 
win_draw(win_t *win)                                                                                                                                                        
{                                                                                                                                                                           
    cairo_surface_t *surface;                                                                                                                                               
    cairo_t *cr;                                                                                                                                                            
    Visual *visual = DefaultVisual(win->dpy, DefaultScreen(win->dpy));                                                                                                      
                                                                                                                                                                            
    XClearWindow(win->dpy, win->win);                                                                                                                                       
                                                                                                                                                                            
    surface = cairo_xlib_surface_create(win->dpy, win->win, visual,                                                                                                         
                                        win->width, win->height);                                                                                                           
    cr = cairo_create(surface);                                                                                                                                             
                                                                                                                                                                            
    cairo_set_source_rgb(cr, 0, 0, 1);                                                                                                                                      
                                                                                                                                                                            
    draw_poly(cr);                                                                                                                                                          
                                                                                                                                                                            
[...]

    cairo_destroy(cr);                                                                                                                                                      
    cairo_surface_destroy (surface);                                                                                                                                        
                                                                                                                                                                            
    ++frame_cnt;                                                                                                                                                            
}

Это кстати фрагмент самого cairorender'а...

no-dashi ★★★★★
()
Ответ на: комментарий от Syncro

> только вот его одни гномы используют

dbus? При том что на нем стоит hal? Да их уже везде запихивают, включая кде, с добрым утром:)

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

А мы никуда не торопимся. Зато от такой стандартизации выигрывают все. А не пользователи одного специального тулкита.

> а вы сравните богатство решениями Qt и туевой кучи решений противоположной линии фронта:)

И что это доказывает? Реально куте и производные работают ТОЛЬКО на себя. Никакой пользы другим десктопам от них нет (я не говорю про пользователей, я говорю про совместное использование кода).

> что-то я не улавливаю где тут кабала: с точки зрения лицензии - разрабатывайте под GPL

А я хочу LGPL/Apache/BSD/X11. Можно?

> нет завязанности на qt - имеем страшный зоопарк отсталых технологий

Потрясающий апломб! Весь fd.o & g.o - зоопарк отсталых технологий. Одни тролтехи несут свет в массы.

ЗЫ Кстати, еще одна технология "от гнома ко всем" - мой libxklavier, который будет использоваться в kde4 (опционально IIRC). И он зависит (о ужас) от glib. И КДЕ согласились с этим. Политика NIH закономерно приводит к тому, что предоставленный кому угодно на мягких лицензионных условиях код "с корнями в мире g" таки проделывает лазейки в мир К. Обратное - неверное. Почему - указано выше.

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

ок, "платформообразующих библиотек на унихе" if you like. Все-таки при всей кросс-переносимости гтк и кутя остаются, в первую очередь, позиксовыми, по происхождению. Жаба и Моно оторваны от униховых корней слишком сильно, чтоб я мог про них так сказать. Это примерно как если б я требовал сишных API на какой-нибудь беос.

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

>Зато от такой стандартизации выигрывают все. А не пользователи одного специального тулкита.

Что-то не заметил этого выигрыша.

>Реально куте и производные работают ТОЛЬКО на себя. Никакой пользы другим десктопам от них нет (я не говорю про пользователей, я говорю про совместное использование кода).

А где написано, что они должны работать на всех? Или есть желание, чтобы было только два десктопа - Gnome и twm?

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

> Что-то не заметил этого выигрыша.

Близорукость? Не замечать, сколько стандартов fd.o УЖЕ приняты в KDE.

> А где написано, что они должны работать на всех? Или есть желание, чтобы было только два десктопа - Gnome и twm?

Есть желание, чтобы приложения из разных миров могли сосуществовать (у пользователей, у 3rd party developers). Над этим и работает fd.o. И часто код, который может быть полезным не только в рамках гнома - переносится из g.o во fd.o. И часть этого кода УЖЕ используется в КДЕ. Вот такой вот односторонний обмен. Что, разумеется, ни капельки не делает кдешников моральными должниками коммюнити.

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

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

Не нравится в qt то, что кодинг выливается в перекладывание кубиков аля басик. И не нужно тут заливать про задачи , которые реально нужно реЩать, а не заниматься создание колеса. Такой подход лишает творчества и отрафирует мозг.

mega_m
()

Если честно, я не понимаю, ЗАЧЕМ Троллям линуксы-шмынуксы виндовсы всаякие... ВОзникло впечатления, что совсем чуть-чуть - и QT будет самодостаточной кросс-архитектурной ПЛАТФОРМОЙ, не нуждающейся в ущербных прослойках, написанных на Си в квадратном корне %)

По этой причине считаю заявления "QT - это круто" аналогичными
заявлениям "Windows - это круто"

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

>Есть желание, чтобы приложения из разных миров могли сосуществовать (у пользователей, у 3rd party developers). Над этим и работает fd.o.

Над этим работают и тролли. Или Вы не знаете о таких нововведениях в Qt 4.2, как QtDBus модуль, перестановка кнопок a-la Gnome (в случае работы в Gnome-окружении), тема Cleanlooks? Это ли не удовлетворение Вашего желания "чтобы приложения из разных миров могли сосуществовать"?

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

>Над этим и работает fd.o. И часто код, который может быть полезным не только в рамках гнома - переносится из g.o во fd.o. И часть этого кода УЖЕ используется в КДЕ. Вот такой вот односторонний обмен.

А что, KDE уже не OSS? Кто-то запрещает переносить код из кед в гном? Если уж в кедах будет зависимость на glib, то почему в гноме не может быть зависимости на kdelibs/qt?

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

>Не нравится в qt то, что кодинг выливается в перекладывание кубиков аля басик. И не нужно тут заливать про задачи , которые реально нужно реЩать, а не заниматься создание колеса. Такой подход лишает творчества и отрафирует мозг.

Каждому свое.

Вам больше нравится создавать свои собственные колеса. А мне нравится сосредоточиться на главной задаче, использовать готовые и отлаженные части, не отвлекаясь на изобретение велосипедов. Девиз Qt "Code less, create more" --- это именно то, что мне нужно.

P.S.: Блин, может потому мы и имеем ситуацию, например, с полудесятком амарокоподобных плейеров на гтк?... =\

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

>ага, давайте делать "QtOs"!

Делайте, кто запрещает?

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

> Это ли не удовлетворение Вашего желания "чтобы приложения из разных миров могли сосуществовать"?

Это бесспорно БОЛЬШОЙ шаг вперед. И я не могу не радоваться. Просто хочется (мечтается), чтобы не в одну сторону работала эта связка (fd.o->kde.o)

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

> dbus? При том что на нем стоит hal? Да их уже везде запихивают, включая кде, с добрым утром:)

ну вот про это я и говорил как про необходимый минимум (аналогов все-таки нет), однако dbus скорее интегрирован в Линукс (как дистрибутив) чем в КДЕ.

> Никакой пользы другим десктопам от них нет (я не говорю про пользователей, я говорю про совместное использование кода).

да вобщем смысл пропадает использовать Qt библиотеки вне его, как уже отмечал klalafuda Qt хорош своей целостностью, т.е. тут либо мы имеем кучу библиотек, каждая со своим API, уровнем документированности, стратегией разработки (я опять про ломку API), лицензией. Ну а программирование с использованием Qt чем не совместное использование кода ? если проект не переключалка раскладки он всеравно потащит за собой и интерфейс к бд (подрубим либу для каждой СУБД, напишем переключатель, будем ориентироваться на одну СУБД или просто используем универсальный драйвер из Qt ? какое решение выглядит более правильным при проектировании ?) сети, GUI ..

> ЗЫ Кстати, еще одна технология "от гнома ко всем" - мой libxklavier, который будет использоваться в kde4 (опционально IIRC). И он зависит (о ужас) от glib.

любой дистрибутив Линукса(установленный и работающий) зависит и от glib и от perl/python/mono и еще от сотен других библиотек/интерпретаторов. Так любимый вами термин NIH, часто оказывается просто врапером к существующей технологии, обеспечивающим более стройную реализацию. Когда предлагаемый "стандарт" не подходит (например нет реализации для Mac или Win или она кривая донельзя, пример - WxWidgets, провоцирующий бурный мат разработчиков) создается собственное решение проблемы.

> Одни тролтехи несут свет в массы.

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

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

http://bugs.gentoo.org/show_bug.cgi?id=125247

можно еще много наискать на туже тему, лучше бы свое, но работающее NIH решение было. Именно поэтому КДЕ не будет напрямую использовать gtsreamer для звука и кайру для графики

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