gpt4 book ai didi

c++ - std::sort 对于少量数据很慢

转载 作者:搜寻专家 更新时间:2023-10-31 01:54:12 38 4
gpt4 key购买 nike

我发现 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();
}

我注意到如果我只有随机洗牌,我的 table 会立即洗牌然后显示。所以这让我认为它的速度很慢。谁能帮我加快 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 秒。

最佳答案

我怀疑 m_list 按值存储项目并且交换它们很昂贵。您可以尝试实现更快的交换或通过智能指针将它们存储在容器中。

当然,分析器可以帮助您更准确地查明问题。

关于c++ - std::sort 对于少量数据很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10033312/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com