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