算法与软件性能:差异、挑战与必备算法
1. 算法到软件过渡的问题
从算法过渡到软件时,可能会出现很多问题。算法复杂度分析虽能为追求高效软件的程序员提供有价值的信息,但也存在局限性。它是唯一能在不运行程序的情况下,合理预测给定输入数据下程序运行时间的方法,然而实际情况中存在诸多影响因素。
2. 算法与软件在内存方面的差异
- 内存模型差异 :算法分析假设内存无限且访问均匀,而实际计算系统有内存层次结构,包括寄存器、缓存、主存和外存(磁盘),这些都是有限的。不同类型内存的访问时间和方式差异很大,例如从外存检索数据比从缓存检索慢6 - 7个数量级。
- 数据访问复杂性 :访问数据时,往往需要检索比所需更多的内容,如缓存要加载整个缓存行,主存要加载整个页面或块。同时,内存管理也很复杂,缓存和主存的稀缺性意味着安装新数据可能会替换旧数据,如果旧数据被修改过还需存回。数据位置对代码性能影响巨大,性能差异达三个数量级并不罕见。
| 内存类型 | 访问速度 | 数据检索特点 |
|---|---|---|
| 缓存 | 快 | 需加载整个缓存行 |
| 主存 | 适中 | 需加载整个页面或块 |
| 外存 |
超级会员免费看
订阅专栏 解锁全文
173万+

被折叠的 条评论
为什么被折叠?



