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

У меня есть приложение, написанное на C++ с использованием Qt4.4.3 в Linux.

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

Мне кажется, что они не должны так сильно различаться.

Это ожидаемое поведение или ошибка, о которой следует сообщить?

Еще немного деталей:

Я создал 100 000 прямоугольников, используя следующие псевдокоманды Tcl:

for {set i 0} {$i < 100000} {incr i} {
  RectCreate [Box [expr 0.001 * $i] 0 [expr 0.001 * ($i + 1)] 100]
}

У прямоугольников нарисованы только их контуры. Я измерил время перерисовки для разных стилей линий. Например. для стиля линий «точки»:

Вот время, которое я видел с дисплеем VNC:

solid line:     0.7 sec
dots:          17.0 sec
dashed:         9.5 sec
longer dashes:  5.7 sec

И на локальном дисплее:

solid line:     0.1 sec
dots:           8.9 sec
dashed:         5.7 sec
longer dashes:  3.5 sec

person WilliamKF    schedule 08.07.2010    source источник
comment
Это потому, что им приходится рисовать все эти лишние точки... шучу, извините. :)   -  person Faisal    schedule 08.07.2010
comment
Мне было бы любопытно увидеть некоторые цифры/метрики или, возможно, фрагмент кода, который позволяет нам воспроизвести это.   -  person FrustratedWithFormsDesigner    schedule 08.07.2010


Ответы (1)


Графический стек слишком сложен для простого ответа. Вещи, которые могут быть «интуитивными», на практике будут работать совершенно иначе.

Не ответ, но я предлагаю вам заглянуть в этот блог, чтобы получить некоторое представление о графике Qt/KDE и о том, что все не так очевидно, как кажется.

http://zrusin.blogspot.com/search?q=performance

person kazanaki    schedule 02.08.2010