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 ()
Ответ на: комментарий от annoynimous

> Он это умеет, даже если печатать запрещено. Надо только пересобрать с соответствующей правкой.
>О, исходнички править... :) А как же оснровная масса быдлодомохозяек? Переживут?
А как основная масса сможет напечатать если печатать документ запрещено? То-то :-)

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

Так и запишем, товарисч Её - пыонер.

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

Jпция 'Соблюдение авторских прав' - не оно?

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

> А как основная масса сможет напечатать если печатать документ запрещено? То-то :-)

Системный администратор настроит им Гном, и они даже не узнают, что то-то было запрещено :) Это ж энтерпрайз, не пионерия какая, с пересборками! :)

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

>Системный администратор настроит им Гном, и они даже не узнают, что то-то было запрещено :)
А что, можно настроить Gnome так, чтобы печатались защищенные от печати pdf? Где???? В какой ветке гыконфа?
>Это ж энтерпрайз, не пионерия какая, с пересборками! :)
Ясно, до пионеров не доросли ышшо, октябрята пересобирать не умеют :-)

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

> Хе-хе, а Гном-то - энтерпрайз.

Есть мнение, что Гном нифига не затачивается под корпоративных пользователей.

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

> Мир смеется над тупыми гномерами, которые вместо того, чтобы "трудится на Линуксе с Гномом" флеймят и пукают в лужи на ЛОРе, крича при этом "Гном это энтерпрайз! энтерпрайз! энтерпрайз!"

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

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

> эта, а ваш kpdf умеет защищенные от печати pdf печатать? Или так, что троллтехи наваяли, тем и пользуется?

если в настройках убрать флажок "соблюдать DRM/авторские права", то умеет :D

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

>> $ rpm -qi k3b|grep Size Size : 25822041 License: GPL

это каким же идиотом надо быть ?????
дурак ! размер чего ты меряешь ?


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

>А реальный коммерческий по самые яйца RHEL - идет таки с гномом, несмотря на мегаудобства и фичастость КДЕ с КуТой.
А реально коммерческая свиста идет вместе с аэрой, которая всех зарулит?

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

> OpenOffice -- это не gnome-приложение,

Деее? А гноме-вфс нафиг ему тогда? С какой точки начинается Гном, короче? :)

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

>дурак ! размер чего ты меряешь ?
ну померял он занимаемое на диске место.
кстати, граверман или что там сколько на диске занимает? Неужели меньше?

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

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

> Буа-га-га. Возьми с полки пирожок. (Уровень хамства вполне отражает уровень интеллекта).

сожалею, но мое хамство не исправит твои кривые рученки

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

> ну с точки зрения десктопа на Linux & K видимо да. а с точки зрения "серьезных приложений" к которым в этом треде так любят аппелировать защитники гнома, qt3 уже почти что история бо начинать что-то новое на 3й версии IMHO сурово неразумно.

В Qt3 был виджет QTable, заполнять который было очень просто, если нужны только текстовые ячейки, без цвета, форматирования, чекбоксов и картинок. В Qt4 его почему-то объявили устаревшим и явили миру QTableWidget, заполнять который простым текстом - тупого кода гораздо больше, надо сначала резервировать память под каждый QTableWidgetItem и пр. Вот напиши мне минимальный код для следующей задачки: нарисовать таблицу умножения, 10x10, ячейки содержат произведения номеров столбцов и строк. С header'ами, форматированием и прочим не возись - мне нужно содержание, а не форма. Итак?

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

> OpenOffice -- это не gnome-приложение,

>Деее? А гноме-вфс нафиг ему тогда? С какой точки начинается Гном, короче? :)
Без него можно обойтись:

USE="-gnome -cairo -firefox" emerge -pv openoffice

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild R ] app-office/openoffice-2.0.3 USE="kde ldap* pam xml -binfilter -cairo -debug -eds -firefox -gnome -gtk -java -odk (-mono%)" LINGUAS="en ru -af -ar -be_BY -bg -bn -bs -ca -cs -cy -da -de -el -en_GB -en_US -en_ZA -es -et -fa -fi -fr -gu_IN -he -hi_IN -hr -hu -it -ja -km -ko -lt -mk -nb -nl -nn -nr -ns -pa_IN -pl -pt -pt_BR -rw -sh_YU -sk -sl -sr_CS -st -sv -sw_TZ -th -tn -tr -ts -vi -xh -zh_CN -zh_TW -zu" 203,676 kB

Total size of downloads: 203,676 kB

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

>Вот напиши мне минимальный код для следующей задачки: нарисовать таблицу умножения, 10x10, ячейки содержат произведения номеров столбцов и строк. С header'ами, форматированием и прочим не возись - мне нужно содержание, а не форма. Итак?

unsigned n = 10;
ui.table->setRowCount(n);
ui.table->setColumnCount(n);
for (unsigned i = 1; i <= n; i++)
for (unsigned j = 1; j <= n; j++)
ui.table->setItem(i-1, j-1, new QTableWidgetItem(QString().setNum(i*j)));

А в чем проблема-то была?

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

>> Вот напиши мне минимальный код для следующей задачки: нарисовать таблицу умножения, 10x10, ячейки содержат произведения номеров столбцов и строк. С header'ами, форматированием и прочим не возись - мне нужно содержание, а не форма. Итак?


tableWidget = new QTableWidget(10, 10, this);
for (int i = 0; i < 10; ++i){
for (int j = 0; j < 10; ++j){
tableWidget->setItem(i, j,
new QTableWidgetItem(tr("%1").arg(i*j));
}
}

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

Форматирование, блин.... =\

P.S.: проект выкладывать? =))

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

>кстати, граверман или что там сколько на диске занимает? Неужели меньше?
equery s graveman
[ Searching for packages matching graveman... ]
* size of app-cdr/graveman-0.3.12_p5
Total files : 248
Total size : 1962.92 KiB

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

>> дурак ! размер чего ты меряешь ?
> ну померял он занимаемое на диске место.

померял занимаемое место на диске чего ????
и такие идиоты запрещают мне ковырятся в носу ?

PS пока что среди гномеров, за редким исключение, одни дебилы
наверное это С так мозг размягчает

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

>equery s graveman [ Searching for packages matching graveman... ] * size of app-cdr/graveman-0.3.12_p5 Total files : 248 Total size : 1962.92 KiB

О! Он отж на дискету не влезает. ))) Ну по функционалу он проигрывает к3б. В последний раз, как я смотрел этого грейвмана, он даже данные после записи проверить не мог. Как там сейчас с этим?

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

> А что, можно настроить Gnome так, чтобы печатались защищенные от печати pdf? Где???? В какой ветке гыконфа?

Хе-хе, вот и выяснилось, что пионерия-то с виндов сразу в кеды полезла. Остальной Линукс, видать, не осилила.

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

Dimez, модератор хренов, мне конечно - до фонаря,
но банить за то что дурака назвал дураком ....
а может вы склонность к гномикам имеете ?

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

>О, исходнички править... :) А как же оснровная масса быдлодомохозяек? Переживут?

Теперь задать дополнительную опцию скрипту configure называется "исходнички править"? Так и запишем: "передозировка гномом"...

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

> Но если вспомнить, сколько этого г в значках, а потом еще пустить какой-нить pdf (я так понял, что со временем все будет пускаться через один движок), то получим несколько тысяч легко.

5000 вершин никак рабочий стол не перевалит, это точно ;)

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

> Кстати, почему обязательно сравнивать скорости cairo и QPainter на display device-ах.

Потому, что тут сравнивается производительность Qt и Cairo на "display device-ах", включая аппаратное ускорение через OpenGL. Не больше, не меньше.

> Почему бы не взять postscript или pdf файл?

Кто мешает? Возьми, протестируй. Могу предположить, разрыв в 5-7 раз сохранится.

> Всё же каиро взяли именно из-за возможности использовать из одного API различные output device. У QPainter - вывод только на display через X или OpenGL.

Ошибаешься. QPainter умеет выводить на любое устройство, для которого написан QPaintDevice (экран, принтер, картинка, просто буфер точек, etc).

> Те как минимум функциональность Cairo и QT различна (причем не в пользу QT).

Различна. В пользу Qt. Намного проще, например, породить своего потомка от QPaintDevice для поддержки нового устройства, чем писать новый surface для Cairo.

> И во-вторых, к отрисовке gtk виджетов cairo никакого отношения не имеет

Я пока /ничего/ не говорил про gtk в контексте этого теста. Но смею предположить: а) svg и прочий вектор захочется рисовать через Cairo, б) авторы векторных редакторов воспользуются Cairo (чтобы не изобретать велосипед), в) 2D интерфейс с OpenGL ускорением захочется делать в том числе и с помощью Cairo.

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

> Нет, есть конечно же достойные личности, сидящии в КДЕ, но основная масса - увы! - школьники :)

Судя по основной массе апологетов GNOME, именно они - школьники. А KDEшники - взрослые люди, которые работают, а с пеной у рта не обсирают конкурирующий тулкит. :)

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

>>>QPainter умеет выводить на любое устройство, для которого написан QPaintDevice (экран, принтер, картинка, просто буфер точек, etc).

Мне не нужна растеризованная картинка, а нужен outline. Этот вопрос я уже задавал - QPaintDevice имеет метод позволяющие нарисовать линию, а не её растеризованный образ?

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

> Фетиш - он у КДЕшников. Они все меряются пиписьками, меряются, все что-то миру доказывает.

Посмотрите начало топика. Как раз вечно доказывают что-то гномовцы. :)

> А мир трудится на Линуксе с Гномом и смеется над вашими потугами :)

Вы за пределы своей каморки хоть раз выглядывали? :)

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

> А реально коммерческая свиста идет вместе с аэрой, которая всех зарулит?

Нет, "свиста" - женского полу и без яиц ни на что не годится.

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

>Так гномеры - ребята, которые Линукс используют (на работе, дома и т.п.). Люди интеллигентные и вежливые :) А кдеешнеги - пионеры, у которых основной десктоп - винда, а линуксом они перед одноклассниками/одноклассницами понтуются, типа, "позырьте, как у меня все круто, ярко и переливается. То-то же! Это потому, что я - хакир!"

Статистику можно? Или это очередная газификация?

>А теперь они вообще в экстазе бьются, нашли подтверждение "тестами".

Когда сами голословно орут "QT - тормоз", то это нормально. Когда тесты (которые можно повторить у себя дома) показали обратное, то это- провокация. Логика - супер!

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

Сегодня тема со 100000 вершин на рабочем не актуально точно. Всё равно что тестировать скорость работы Tremulous на i286 в минимальной конфигурации.

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

>>Но смею предположить: а) svg и прочий вектор захочется рисовать через Cairo

Кстати, QPainter уже осилил SVG? Или тоже через жо^W растр?

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

> Хе-хе, а Гном-то - энтерпрайз. Спросим дружно, где осталось КДЕ как десктоп по-умолчанию?

Mandriva, Mephis, Kubuntu, PCLinuxOS, Slackware. Из первых 10 позиций на distrowatch.com/ - 4 позиции за KDE (за Gnome - тоже 4). И где ваш энтерпрайз?

> Ну ничего, дома предаваться вашему греху можно, все равно виндой пользуетесь :)

По себе людей не судят. :)

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

> Мне не нужна растеризованная картинка, а нужен outline. Этот вопрос я уже задавал - QPaintDevice имеет метод позволяющие нарисовать линию, а не её растеризованный образ?


он только это и умеет делать

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

> эта кдешная быдлоподелка занимает даже не 22, а почти 26 мегабайт!

Где такую траву берёте?

rpm -qi k3b | grep ^Size
Size : 9960221

Fedora Core 3. На Klik вообще 5 МБ.

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

>Хе-хе, а Гном-то - энтерпрайз

Нашли чем хвастать. Ну стали попсой, ибо тупой манагер или секретарша, сроду ничего сложнее счетных палочек в руках не державшая, от того, что в KDE можно все настроить, покрываются потом и начинают мелко дрожать. Вы им гконф покажите и объясните, как с помощью него убрать анимацию сворачивания окон...

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

> Кстати, QPainter уже осилил SVG? Или тоже через жо^W растр?

QSvgRenderer?

кстати рекомендую посмотреть предыдущие записи в блоге Расина. 300kb svg-шная птичка зело шустренько рисуется.

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

>Мне не нужна растеризованная картинка, а нужен outline. Этот вопрос я уже задавал - QPaintDevice имеет метод позволяющие нарисовать линию, а не её растеризованный образ?

Где нарисовать, на сфере нулевого радиуса в вакууме?

Еще раз, по буквам: QPaintDevice не умеет вообще ничего рисовать, это класс контекста устройства графического вывода. Рисует QPainter, который одинаково обращается с любым наследником класса QPaintDevice, указатель на экземпляр которого ему передается в конструкторе.

Типа такого:

QPrinter prn; if (prn.setup(this)) { QPainter p(&prn);

QPaintDeviceMetrics pdm(&prn); int h = pdm.height(); int w = pdm.width();

// код рисования с использованием QPainter: http://doc.trolltech.com/4.2/qpainter.html }

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

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

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

> А реальный коммерческий по самые яйца RHEL - идет таки с гномом, несмотря на мегаудобства и фичастость КДЕ с КуТой.

Всё верно с точки зрения коммерсов: чем проще программа и меньший функционал она даёт - тем меньше головняка с техподдержкой. Корпорациям всегда было начхать на удобства конечных пользователей. :)

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

> Судя по основной массе апологетов GNOME, именно они - школьники. А KDEшники - взрослые люди, которые работают, а с пеной у рта не обсирают конкурирующий тулкит. :)

Хе-хе, расскажите это Вашей бабушке. Моих постов тут - капля, в перерывах по написании статьи. А больше всех тут орут Ка-Де-Йе-шники, ровно коты, которым яйца прищемили.

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

>Как это можно НАРИСОВАТЬ линию без растеризации?

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

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

>Как это можно НАРИСОВАТЬ линию без растеризации?
Ну, например, когда твоё бренное тело не было даже в проекте существовали векторные дисплеи :-)

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

> По себе людей не судят. :)

Йоу, мой черный браза, ты прав, есть у меня винда! :) В нераспечатнном конвертике, что с ноутом пришла. А на ноуте давно "лялех" :) В лабе - тоже Линукс.

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

>Хе-хе, расскажите это Вашей бабушке. Моих постов тут - капля, в перерывах по написании статьи. А больше всех тут орут Ка-Де-Йе-шники, ровно коты, которым яйца прищемили.

"Моих постов"

"Ка-Де-Йе-шники"

Значит, раз ВСЕ кдешники вместе взятые написали больше, чем 1 Анонимиоуз, то KDE хуже гнома. Я уже говорил про логику?

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