gpt4 book ai didi

c++ - 数据检索和索引

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:03:21 24 4
gpt4 key购买 nike

我有大约 800,000 行数据存储在数据库的 boost 共享内存中。数据的形式是:

Id        Color        Length          Size

1 1 2 4
2 3 4 5
3 2 2 0
4 1 2 4......and so on

颜色可以是 1-12 的值,长度 1-4 和尺寸 1-5,Id、Length、Color、Size 存储在共享内存中大小为 800,000 的单独 vector 中。所以有Id的Id vector ,Color的Color vector 等等。

我想在执行某些计算之前过滤数据。所以我想要颜色为 1,长度为 2,大小为 4 的数据,即上述情况下的第 1 行和第 4 行。有没有什么有效的方法可以在不使用 for 循环并遍历所有 800,000 张图像并检查条件的情况下过滤数据?

现在我只是使用 mysql 语句来获取满足条件的数据的 ID。

"select Id from features_table where Color=1 and Length=2 and Size =4"

但是有没有更快的方法呢?还是我应该坚持这种方法?我正在寻找一种更快的方法,所以我不确定从数据库中获取 ID 是否会增加算法的执行时间。

在这种情况下,我可以考虑哪些其他选项?我阅读了有关哈希表、B 树、二进制搜索树的内容,但我很困惑哪个适合这种情况。 kd-tree 在这种情况下会有帮助吗?因为许 multimap 像可能具有相同的颜色、长度和大小组合。我不确定 kd-tree 是否正确。我在用于 kd-tree 的 opencv 中阅读了 FLANN,是否有任何示例或资源在这种情况下可能有帮助?或者是否有任何内置的 C++ 库?

最佳答案

听起来你只做了一次。如果是这种情况,那么创建包含所有元素的任何数据结构将比测试每个元素要慢。确保在其中任何一个失败后继续下一个元素(在 C/C++ 中,带有 color==1 && length==2 && size==4 的 if 语句将自动为您进行短路评估)。将数据读入缓冲区,而不是一次一行或任何内容。向零循环并使用指针来避免解析数组索引时的隐式乘法。除此之外,没有想到任何优化。

关于c++ - 数据检索和索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21697511/

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