Hi,

while digging through the bugreports I found https://bugreports.qt.io/browse/QTBUG-66677 which seems to show a downside of QVector::reserve(). QPainterPath::addPolygon() is calling reserve() to make sure to have enough space for the new positions. This is exactly what I would have done and what e.g. CLazy suggests. But it looks like reserve() allocates *exactly* the amount of elements given. Therefore calling addPolygon() a second time will do a new reallocation and so on. The documentation for reserve() only states that memory for 'at least size elements' is allocated so my naive assumption would be that calling reserve a second time with a slightly bigger value than before does nothing. But this doesn't seem to be the case here.

For the bug: removing the reserve() inside addPolygon() fixes the speed issues mentioned in the bug report. Don't know if the bug report is a valid use case though.

Thx,
Christian
_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to