Мне нужно быстро выводить на экран, поворачивать и масштабировать большое количество (порядка 800000) прямоугольников. В 3-ем Qt можно было рисовать в память и потом через bitBlt быстро отрисовывать всё на экране. В 4-ом Qt bitBlt исчез, т.к. поддержка двойной буфферизации была обещана каждому виджэту.
Однако я ощущаю довольно неприятные тормоза в связи с чем возникает резонный вопрос: что я делаю не так? Какие здесь могут быть хитрости?
К примеру, каким образом можно повысить производительность работы следующего куска кода?
void QPlate::draw(QPainter* p)
{
p->translate(m_radius, m_radius);
p->save();
p->setMatrix(matrix, true);
// set matrix
// draw initial placement
QRectF placementRect(-m_radius, -m_radius, 2*m_radius, 2*m_radius);
// p->drawRect(placementRect);
// draw plate
QPainterPath path;
path.moveTo(-m_x, m_h);
path.arcTo(placementRect, (270+m_alfa), (360-2*m_alfa));
path.closeSubpath();
p->setPen(Qt::red);
p->drawPath(path);
p->setClipPath(path);
// draw crystals
foreach(QPointer<QCrystal> crystal, crystalVector)
crystal->draw(p);
p->restore();
}