容器
游戏引擎对性能的要求很高, 因此除了 STL 还有一些注重高性能的容器库是更好的选择.
常见的容器库:
- EASTL: Electronic Arts 实现的 STL, 详情请参考文档.
- STLport: 符合 ISO C++ 标准, 为兼容多个编译器和目标平台而设计, 有比 STL 更高的效率和更丰富的功能.
- Boost: 相比 STL 功能更加丰富, 但体积十分庞大且不保证支持向后兼容.
- STL.
STL 有以下几个的缺点:
- 会进行许多动态内存分配.
- 不同版本的实现可能有较大差别.
C++ 默认内存分配方式:
- 内存分配/回收慢, 难以快速响应.
- 可能有锁, 难以高并发.
- 内存对齐无法控制, 访问效率降低.
- 分配位置无法控制, 无法有效利用 cache 和 SIMD.