【发布时间】:2018-11-27 13:17:28
【问题描述】:
我目前正在编写一个缓存模拟器,并且正在考虑为这个特定的应用程序使用哪个容器。
我必须从一个文件中读取内存,该文件包含以下格式的数据:
[instruction] [32 bit address] [amount of instructions since previous data memory access]
示例:
s 0x1fffff78 1
指令始终为“s”或“l”,文件大小从 1 kB 到 10 MB。
我正在考虑使用 Map,因此我可以将指令与地址配对。但是据我所知,地图在检索和插入方面并不是很快,这违背了缓存的目的。
向量是我的第二选择,但这会使分离三个字段更加困难。如果文件仍然很小,我会使用成对的向量,但事实并非如此。此外,由于我需要按内存地址搜索,这似乎不是正确的选择。
我应该使用地图、矢量还是有更快/更好的替代方法?
【问题讨论】:
-
不清楚为什么使用矢量会很困难。一般来说,说 vector 比 map 或其他方式更快是毫无意义的。您是否需要在恒定时间内在给定索引处进行随机访问,或者您是否需要在恒定时间内找到给定键的值?这应该是推动决策的原因
-
考虑到它是一个缓存,我需要在恒定时间内按地址查找值作为键。我编辑了我的问题以反映这一点
-
你能有几个相同的地址吗?文件中的顺序重要吗?
-
可以有相同的地址,是的。文件顺序不重要
标签: c++ performance stl