I did tests and model is not a problem here.
qDebug() << "Iteration test start";
timer.start();
rows = dataSetModel->rowCount();
columns = dataSetModel->columnCount();
for (int i = 0; i<rows; i++){
for (int j = 0; j<columns; j++){
value = dataSetModel->data(dataSetModel->index(i,j));
}
}
qDebug() << "Time elapsed: " << timer.elapsed();
qDebug() << "Iteration test start";
timer.start();
rows = dataSetModel->rowCount();
columns = dataSetModel->columnCount();
for (int i = 0; i<rows; i++){
for (int j = 0; j<columns; j++){
value = dataSetModel->data(dataSetModel->index(i,j));
}
}
qDebug() << "Time elapsed: " << timer.elapsed();
To copy to clipboard, switch view to plain text mode
Tests for 30 columns and 14k rows show that iterating all samples takes 55 ms.
Tests for 30 columns and 200k rows give us 735 ms to iterate and copy value of each sample (I ordered it to copy received QVariant to empty QVariant value).
So I would say, that model is pretty fast. Also there is no difference if model has 420k samples or 6kk samples, scroll lag is absolutely the same. So problem is with graphical representation by QTableView.
Bookmarks