c++ - uint16_t 到 uint16_t 映射的最有效容器
问题描述
我正在为处理能力非常有限的机器开发程序,我想将uint16_t
键映射到uint16_t
值。
我目前正在使用std::map
使用非安全阅读:
std::map<uint16_t, uint16_t> m;
//fill m only once
while(true){
auto x = m[y];
}
性能仍不能满足要求。在执行速度方面是否有更好的解决方案?
编辑: 一些信息:
- 项目总数少于 500
- 插入只进行一次
- 查询值超过250次/秒
- 键和值是唯一的
- Ram 非常有限,整体 ram 为 512KB,这部分代码的 free ram 不到 50KB
- 100 MHz 单核处理器
解决方案
如果没有更多关于您的地图的上下文,
如果您打算使用很多键,那么像之前建议的大数组将很容易处理,因为不会发生冲突,但是如果您不打算使用所有内存,则可能会很浪费。
如果您打算使用相当数量的数据,但不足以导致过多的哈希冲突,std::unordered_map 已摊销 O(1) 查找,并且如果您不关心它们的存储顺序在,这可能是一个很好的猜测。
如果您使用的数据不多并要求它灵活,那么 std::vector 是一个不错的选择
鉴于我们所知道的是,它是 uin16_t 到 uint16_t 的映射,没有一个最佳答案。
推荐阅读
- javascript - 为什么这个 JavaScript 对象方法返回“不是函数”方法?
- flutter - shared_preferences 对现有值返回 null
- bitmap - Inno 在背景图像上设置“系统资源不足”
- python-3.x - 如何从 N 个数字列表中生成 k 个数字的组合(其中 N 可能是 >>> k)?
- c - 从文件读取到结构仅写入数组中的第一个结构
- python - 使用没有外部库的 Q-learning 模型
- android - 复合组件不恢复视图状态
- php - Laravel Route 进入 Controller 但不显示数据
- javascript - 防止点击底层div,反应js
- java - Spring Boot 安全性不会重定向配置(HttpSecurity http)方法上的 oauth/authorize 调用