1.计算机内存的特性
- 时间局部性
- 空间局部性
- 在现代计算机内存实现时,一般会使用缓存,合理的利用缓存可以提高程序性能
2.标准库容器
2.1序列式容器
- vector和array
- deque(双向队列)
- list和forward_list
- basic_string
2.2关联式容器
- 有序关联式容器(基于树存储,时间复杂度O(logn))
- 无序关联式容器(基于哈希表,均摊时间复杂度O(1))
2.3容器适配器
容器适配器表示可以由序列式容器实现的抽象数据结构(stack、queue、priority_queue)
3.使用视图
- 使用string_view避免拷贝
- 使用span消除数组退化
4.性能方面的考量
- 在复杂度和开销间寻找平衡
- 了解并使用适当的API函数
5.并行数组
struct User{
std::string name_;
short level_{};
bool is_playing_{};
};
std::vector<User> users;
//并行数组,如果只访问name_、level_或is_playing_可以加快访问速度
std::vector<std::string> users_name;
std::vector<short> users_level;
std::vector<bool> users_is_playing;