std :: sortは非常に遅く、1000個のアイテムしかソートされていないことがわかりました。
クラステンプレートtemplate <typename T> class TableModel : public QAbstractTableModel
には、テーブルを並べ替える次の関数があります。
template<typename T>
void TableModel<T>::sort(int column, Qt::SortOrder order = Qt::AscendingOrder) {
if(order == Qt::AscendingOrder) {
qSort(m_list.begin(), m_list.end(), less<T>(column));
} else {
qSort(m_list.begin(), m_list.end(), greater<T>(column));
}
reset();
}
ランダムにシャッフルするだけでテーブルがシャッフルされ、すぐに表示されることに気付きました。だから、これは私にその種の遅いと思うように導きます。QTableの並べ替えを高速化するのを手伝ってくれる人はいますか?
これがless構造体です。
template<typename T>
struct less {
int index;
less(int index) : index(index) {}
bool operator()(const T& first, const T& second) {
return T::less(first, second, index);
}
};
T :: lessは関数であり、指定されたインデックスに基づく比較よりも少ない関数です。
スローとは、後で約100,000アイテムを処理する必要がある場合に、1000アイテムのみの5秒と定義されます。