В программе используется собственноручно написанный класс для рисования графиков. Обычно число точек осредненно до пары десятков - сотен, тогда все хорошо, но иногда надо отрисовать все точки, а их пара сотен тысяч - миллион. cur - объект класса кривой, по сути QVector<QPointF> с примочками вроде цвета и толщины. И вот тут проявилась одна вещь, которую не могу понять:
qDebug() << "A:" << QDateTime::currentDateTime();
if (cur->getStyle() & Curve::LineStrip) {
qDebug() << "1:" << QDateTime::currentDateTime();
newData.clear();
painter->setPen(cur->getLinePen());
qDebug() << "2:" << QDateTime::currentDateTime();
QVector<QPointF>::const_iterator itCurEnd = cur->data.constEnd();
for (QVector<QPointF>::const_iterator p = cur->data.constBegin(); p != itCurEnd; ++p) {
x = (int)((p->x() - minX) * KX) + marginLeft;
y = (int)(height() - (p->y() - minY) * KY) - marginBottom;
newData.push_back(QPoint(x, y));
}
qDebug() << "3:" << QDateTime::currentDateTime();
painter->drawPolyline(QPolygon(newData));
qDebug() << "4:" << QDateTime::currentDateTime();
}
qDebug() << "B:" << QDateTime::currentDateTime();
А вот два результата:
A: QDateTime("Sun Aug 11 15:07:50 2013")
1: QDateTime("Sun Aug 11 15:07:50 2013")
2: QDateTime("Sun Aug 11 15:07:50 2013")
3: QDateTime("Sun Aug 11
15:07:50 2013")
4: QDateTime("Sun Aug 11
15:07:51 2013")
B: QDateTime("Sun Aug 11 15:07:51 2013")
A: QDateTime("Sun Aug 11 15:08:09 2013")
1: QDateTime("Sun Aug 11 15:08:09 2013")
2: QDateTime("Sun Aug 11 15:08:09 2013")
3: QDateTime("Sun Aug 11
15:08:09 2013")
4: QDateTime("Sun Aug 11
15:09:58 2013")
B: QDateTime("Sun Aug 11 15:09:58 2013")
Абциссы в обоих случаях одинаковые. Между двумя прогонами разница всего лишь в том, что в первом случае ординаты 0<y<1, а во втором - 240<y<300. Откуда такая разница во времени работы painter->drawPolyline(QPolygonF(newData));?