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 ()

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

Форматирование, ля!!

Типа такого: 

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

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

    // код рисования с использованием QPainter
}

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

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

Ты хто, чудище? Гентушник или Слакварщик? :) Только моему процу делать и нечего, как собирать что-то. Не, я лучше считать задачи буду :)

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

>Вроде были когда-то компы, где программно можно было управлять лучем в мониторе и рисовать линии, окружности и кривые - без всякой растеризации. Никакого антиальязинга не надо было...
+1
Аперидил :-)
<offtop>
Кстати, довольно интересные девайсы, с памятью в дисплее, световые перья, опять же. :-)
</offtop>

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

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

Действительно, парень, с логикой у тебя не очень. Гномеры - они делом заняты. А Ка-Ды-Йешники - на ЛОРе флеймят. Ч.т.д. :)

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

>Ну так приведи тогда содержание пакета что ли... У меня на арче 5М сам к3б и 5М i18n к нему
Там, наверное, полная локализация внутри лежит (включая хинди и мумба-юмба).

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

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

у тебя пдфки с сложной векторной графикой никогда не тормозили при скроллинге ? А свэгешки должны состоять в основном из 4 кружочков с градиентами , не больше ?

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

>А свэгешки должны состоять в основном из 4 кружочков с градиентами , не больше ?

Это условие будет включено в новую версию Gnome HIG

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

>А Ка-Ды-Йешники - на ЛОРе флеймят.

Сами с собой, ага =)))

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

>Гномеры - они делом заняты. А Ка-Ды-Йешники - на ЛОРе флеймят.

Ну иди и займись делом, что ж ты тут завис? Или слава Гика покоя не дает?

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

>>QPaintDevice не умеет вообще ничего рисовать

Отсюда и вопрос. Потомки QPaintDevice как воспринимают команду от QPainter - "нарисовать линию"? Они ее рисуют как линию (если потомок - векторное устройство например postscript) или растеризованный образ линии (например, если потомок дисплей). Или они таких тонких различий не делают?

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

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

Ну да, как же ещё очередное ядро Linux запустить без полного апгрейда Ж) Это уже давно не так, в чём собственно можно убедиться проследив за базовой конфигурацией продаваемых ПК. Актуальность приобретения Vista ничем не поддержана кроме как апгрейдом железа, от того такие долгие муки её рождения. Даже появление IE7 - кампания по легализации ПО от Microsoft. Ну и что теперь? Теперь каждый пользователь MS может себя считать родным сыном Билла Гейтса?

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

> Мне не нужна растеризованная картинка, а нужен outline.

А ты подумай, как рисуют через OpenGL? Неужели битмапами?

И, естественно, QPrinter (точнее его QPaintEngine) кривые в PS и PDF выводит именно линиями, а не битмапом.

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

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

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

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

>то-то новое на 3й версии IMHO сурово неразумно.

Умный парни как обычно зажигают. Чего меня может заставить побежать покупать лицензию на 4 qt, когда qt 3.3 (к примеру) прекрасно работает и прекрасно под ней всё разрабатывается и будет разрабатываться ещё долго ?

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

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

Вот я и спрашивал, чтобы понять обоснованность теста при 100000 вершин, какие есть красивые и быстрые 3D игрушки на Qt и Cairo... может тебе известны такие? Или так, покричать просто влез?

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

> Чего-то мне сразу расхотелось писать на Qt,- у этих Qt-шников никакого уважения к оппонентам ... и так по всей ветке

Расслабься, это просто провокатор. Возможно, geek в гриме. :)

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

Не знаю, что там шапочники напихали в этот пакет, но вот в мандриве:
10299567 Sep 20 2006 i586/media/main/k3b-0.12.17-1mdv2007.0.i586.rpm
14966 Sep 20 2006 i586/media/main/k3b-dvd-0.12.17-1mdv2007.0.i586.rpm
983248 Sep 20 2006 i586/media/main/libk3b2-0.12.17-1mdv2007.0.i586.rpm

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

>>А ты подумай, как рисуют через OpenGL? Неужели битмапами?
Да кто ж вас кдешнегов поймет. Если в QPaintDevice зашиты методы типа int x11Depth () const может там и шорткат для OpenGL тоже имеется.

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

> Когда тесты (которые можно повторить у себя дома)

давай тесткейс, а то пока ничего повторить нельзя ;-)

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

>Умный парни как обычно зажигают. Чего меня может заставить побежать покупать лицензию на 4 qt, когда qt 3.3 (к примеру) прекрасно работает

Судя по http://www.trolltech.com/products/qt/licenses/pricing лицензия идет не на какую-то конкретную версию, а на QT вообще. Хотя я могу и ошибаться.

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

> Умный парни как обычно зажигают. Чего меня может заставить побежать покупать лицензию на 4 qt, когда qt 3.3 (к примеру) прекрасно работает и прекрасно под ней всё разрабатывается и будет разрабатываться ещё долго ?

Trolltech releases new versions of their products regularly, usually four times a year. Those releases are available for free for customers with an active support and maintenance contract.

anonymous
()

а я! а вы... а я ваще пишу под Fox-toolkit и ё.. ваши проблемы!

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

> Ну иди и займись делом, что ж ты тут завис? Или слава Гика покоя не дает?

Зачем мне идти? Я и так делом занят: статью пишу. А когда надоедает, Ка-Ды-Йешников дразню :) Они так забавно ведутся, фанатики.

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

>Я и так делом занят: статью пишу

По психологии? "Как вывести из себя KDEшника"?

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

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

или ты хочешь сказать что за последние 10 лет _вычислительная сложность_ рендеринга графики не возросла и вся ушла в системные требования вспомогательного софта ?

благодаря росту мощности современного компа мы сейчас имеем возможность наблюдать реалтайм векторную графику. Это было не возможно 10 лет назад на ПК.

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

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

>А когда надоедает, Ка-Ды-Йешников дразню :) Они так забавно ведутся, фанатики.

И кто теперь будет утверждать, что красноглазые KDEшники провоцируют флейм, а вежливые гномофилы ведут исключительно конструктивную беседу?

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

Так бы сразу и сказал - "я неудовлетворённый нервный психопат, с кем мне можно тут поругаться", а тебе бы ответили - "тут у нас можно ругаться только про Linux"

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

> И кто теперь будет утверждать, что красноглазые KDEшники провоцируют флейм, а вежливые гномофилы ведут исключительно конструктивную беседу?

Не вижу никаких противоречий. Гномофилы разговаривают на языке разума, а кедовладельцы обычно либо слюни пускают, либо пену. Svu, вон, беседовал с вами, вежливо и конструктивно, а что в ответ слышал? Наследование! Полиморфизм! Перегрузка операторов! Слов красивых набрались, сомений нет. Только Qt все равно остается монстром, не unix-way. Все "маленькие утилиты" КДЕ - всего лишь "мордочки" к гигантской Qt - тот же "швейцарский нож" на все случаи жизни. Да еще и принадлежащий одной компании. Захочет ее левая нога завтра сделать библиотеку платной - и КДЕ рухнет, как карточный домик. Он про это говорил, но вы же, как всегда, не слышите.

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

Никто не отрицает, что у Cairo могут быть (и, наверное, есть) проблемы, в том числе с производительностью. Так это эфолюция: Cairo пока еще растет "по фичам", т.е. в ширь, а на этом этапе производительность - вторично. Кнута вы тоже не читали, а ведь он сказал: "Преждевременная оптимизация - корень всех зол". А Qt и стыдно было бы быть медленнее, после 10 лет развития.

annoynimous ★★★★★
()

Может кто-нибудь наконец ответит консруктивно на вопросы:

1) Где сырцы тесткейса?

2) Почему в файле данных описаны четыре многоугольника, а в тексте указано, что тестировалось три?

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

>Не вижу никаких противоречий. Гномофилы разговаривают на языке разума

Ты это про себя? От скромности не помрешь...

>Svu, вон, беседовал с вами, вежливо и конструктивно, а что в ответ слышал? Наследование! Полиморфизм! Перегрузка операторов!

А кто орал "энтерпрайз, энтерпрайз, энтерпрайз, энтерпрайз!"?

>Только Qt все равно остается монстром, не unix-way. Все "маленькие утилиты" КДЕ - всего лишь "мордочки" к гигантской Qt - тот же "швейцарский нож" на все случаи жизни.

Только glibc все равно остается монстром, не unix-way. Все "маленькие утилиты" Linux - всего лишь "мордочки" к гигантскому glibc - тот же "швейцарский нож" на все случаи жизни.

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

Мсье не слышал слово fork?

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

> Кнута вы тоже не читали, а ведь он сказал: "Преждевременная оптимизация - корень всех зол".

Кнут приписывал это утверждению Хоару.

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

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

> Мсье не слышал слово fork?

Всё еще веселее -- есть официальная бумага, имеющая силу контракта: если Trolltech отказывается продолжать отдавать Qt под GPL, то последняя GPL версия автоматически становится свободной на условиях BSDL.

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

>Кнута вы тоже не читали, а ведь он сказал: "Преждевременная оптимизация - корень всех зол".

ОК! Напишу я программу, которая сортирует исключительно методом пузырька, а вместо базы данных для хранения сотен тысяч записей использует текстовые файлы. А когда заказчик спросит "Почему тормозит?", скажу: "А вы, батенька, Кнута почитайте"...

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

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

А проблема вот в чём. В реальности таблицы обычно динамические. Они часто перерисовываются и имеют непостоянное число строк и столбцов. И вот тут настаёт сипец. Потому что если память, выделенную через new QTableWidgetItem, самому не освобождать, она начинает течь. И это ПРЕКРАСНО ВИДНО, если смотреть память, используемую приложением. Она неуклонно растёт при каждой перерисовке таблицы. Значит, надо предусматривать костыль, её освобождающий. Тебе это нравится?

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

> ОК! Напишу я программу, которая сортирует исключительно методом пузырька, а вместо базы данных для хранения сотен тысяч записей использует текстовые файлы. А когда заказчик спросит "Почему тормозит?", скажу: "А вы, батенька, Кнута почитайте"...

Всё таки стоит тебе самому Кнута почитать ;-)

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

> Мсье не слышал слово fork?

хе-хе, кто же форк тянуть-то будет, коль сами ничего, кроме морд писать не умеем? Нет, сдохнет КДЕ, если тролли сменят курс.

> Только glibc все равно остается монстром, не unix-way

а давно в glibc включили средства рисования, печати, формирования pdf и т.д.? :О

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

>Trolltech releases new versions of their products regularly, usually >four times a year. Those releases are available for free for customers >with an active support and maintenance contract.

и что ? это меня прям заставляет ? :D :D. Работает - не трож пускай работает, грабли qt3 (под lin/win) мы все знаем, кода на qt3 с реюзом много, зачем qt 4, зачем переписывать гору кода ? Комплекса "не последней версии" славо богу тут не у кого нету :))).

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

>Зачем мне идти?

а зачем ты тут нужен?

>А когда надоедает, Ка-Ды-Йешников дразню

собственным скудоумием и примитивностью? у тебя получается. нам смешно =)

>Они так забавно ведутся, фанатики.

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

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

> воооо! поэтому всем Fox-toolkit!!!

а хорошая штука кстати. помнится в году этак 2001 что-то я на нем делал.. жив еще, курилка-то?

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

> а зачем ты тут нужен?

да примерно затем, что и толпы бешеных Ка-Дэ-Йешников :)

> собственным скудоумием и примитивностью? у тебя получается. нам смешно =)

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

> так то твои посты наверняка. неужели ты думаешь что для нас, it-шников, не психиатров, представляет интерес твой случай запущенного треположества?

нет такой болезни. не сдал, садись, два :)

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

> А тулкит я уже выбрал, и это не Qt, и не столько из-за этого

Я прекрасно знаю, из-за чего. Это ни для кого не тайна :)

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

>А проблема вот в чём. В реальности таблицы обычно динамические. Они часто перерисовываются и имеют непостоянное число строк и столбцов. И вот тут настаёт сипец. Потому что если память, выделенную через new QTableWidgetItem, самому не освобождать, она начинает течь. И это ПРЕКРАСНО ВИДНО, если смотреть память, используемую приложением. Она неуклонно растёт при каждой перерисовке таблицы. Значит, надо предусматривать костыль, её освобождающий. Тебе это нравится?

Капец, теперь осовобождение памяти это костыль? Тебе лечиться надо.

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