在处理一些遗留代码时,我遇到了内存问题,主要是(我相信)由于 STL 映射的广泛使用(特别是“maps-of-maps”。)
我正在将 Boost flat_map 视为一种可能的解决方案。有没有人对 flat_maps 有任何第一手经验,特别是在速度和/或内存使用方面的改进方面?我当然意识到这可能非常依赖于存储的数据类型和存储方式,但仍然对人们的实际体验感到好奇。
谁能指出一些可靠的例子?
举个例子:这个map-of-a-map的代码有几种情况;也就是说,值是另一个映射的映射。
通过用一对向量替换“内部”映射,我将内存占用减少了 10:1(3G 到 300M)。当然,这会减慢搜索速度,但对于这种特殊情况,这似乎并不重要。它涉及大约一天的重构和仔细测试。
Boost 的 flat_map 听起来可能正是我所需要的,但除了 Boost 网站上的类描述之外,我似乎找不到太多关于它的信息。寻找一些第一手的反馈。