【发布时间】:2012-03-29 16:16:12
【问题描述】:
我们有一个在低功耗处理器上运行的应用程序,它需要对传入数据进行快速响应。数据带有关联的键。每个键的范围为 0 - 0xFE(最大 0xFF)。数据本身的大小范围从 1kB 到 4kB。系统处理数据如下:
data in
key lookup -> insert key & data if not found
buffer data in existing key
在某些事件之后,一个键和相关数据被销毁。
我们正在尝试几种解决方案:
预分配
std::vector<std::pair<int,unsigned char *>>,根据索引位置查找键值。std::map<int, unsigned char *>红黑树
std::vector<...>对键的进行二分排序和二分查找
还有其他算法可以快速插入-搜索-删除吗?
谢谢。
【问题讨论】:
-
您是要为单个键创建重复项,还是使用现有键的新数据替换旧数据?
-
由于您谈论的是低功耗处理器上的非常小的数据集(1 字节密钥),因此您绝对应该忽略传统算法性能和算法的大 O 表示法。请记住,所有这些仅适用于数据集向无穷大增长的情况。小型套装的实际性能不遵循这些模式。执行 1) 或 2) 并分析性能
-
@Mark - 单个键,新数据针对该键缓冲
-
@TJD - 感谢大 O 评论。从来没有这么想过。
标签: c++ search sorting vector map