软件优化的必要性;
1. 优化为软件开发的一部分
2. 优化是高效的且可持续的
3. 软件的活力、生命周期的延续
改善代码性能的一些策略:
1. 使用更好的编译器以及编译选项
2. 使用最优算法
3. 使用更好的库并用好库
4. 减少内存分配和复制操作
5. 移除不必要的计算操作,优化热点代码
6. 使用最优的数据结构
7. 提高并发性以更快地处理
8. 优化内存管理
影响优化的计算机的行为;
1. C++中的执行语句、执行顺序不一定是顺序的,编译器可能会重排执行指令,另外并发也会导致执行顺序的进一步复杂化
2. volatile变量、std::atomic特性等都由操作系统来隐藏实现的
3. 计算机的内存操作,如读写其实是比较慢的且并不是以字节为单位访问的,而是一大块的数据读写的以补偿内存操作慢的问题,
此外内存未对齐的字节(不在同一个字)访问耗时是字节在同一个字中时的两倍多
4. 除了读大块数据外,内存还有多级高速缓存来弥补(尤其是频繁访问的内存地址),紧挨的指令或数据结构如数组等更容易放入缓存(链表或树则会比较慢对缓存作用帮助不大,可能会更慢)
5. 字节序的问题,大端和小端模式
6. 虚拟内存模拟无限物理内存,读写磁盘文件到内存耗时较高;此外程序访问的内存比较分散时可能出现页抖动,减低了性能
知识兔