【发布时间】:2016-07-05 21:48:48
【问题描述】:
我目前(在设计阶段)正在开发一种使用自定义 IR 的小型编译器。我遇到的问题是选择一个有效的容器数据结构来包含所有指令。
一个基本块将包含大约 10000 条指令,一条指令大约有大约 250 个字节。
我考虑过使用列表,因为编译器将进行大量复杂的转换(即大量随机插入/删除),因此拥有一个不会使迭代器无效的容器数据结构会很好。因为它会使转换算法简单易懂。
另一方面,由于缓存未命中和内存碎片的已知问题,这将导致性能损失。 std::vector 在这里会有所帮助,但我想用向量实现转换会很痛苦。
所以问题是,是否有另一个数据结构具有低内存碎片以减少内存缓存未命中并且不会使迭代器无效。 或者我是否应该忽略这一点并继续使用列表。
【问题讨论】:
-
我建议尝试解决迭代器失效问题
标签: list c++11 vector containers c++14