32、算法与软件性能:差异、挑战与必备算法

算法与软件性能:差异、挑战与必备算法

1. 算法到软件过渡的问题

从算法过渡到软件时,可能会出现很多问题。算法复杂度分析虽能为追求高效软件的程序员提供有价值的信息,但也存在局限性。它是唯一能在不运行程序的情况下,合理预测给定输入数据下程序运行时间的方法,然而实际情况中存在诸多影响因素。

2. 算法与软件在内存方面的差异
  • 内存模型差异 :算法分析假设内存无限且访问均匀,而实际计算系统有内存层次结构,包括寄存器、缓存、主存和外存(磁盘),这些都是有限的。不同类型内存的访问时间和方式差异很大,例如从外存检索数据比从缓存检索慢6 - 7个数量级。
  • 数据访问复杂性 :访问数据时,往往需要检索比所需更多的内容,如缓存要加载整个缓存行,主存要加载整个页面或块。同时,内存管理也很复杂,缓存和主存的稀缺性意味着安装新数据可能会替换旧数据,如果旧数据被修改过还需存回。数据位置对代码性能影响巨大,性能差异达三个数量级并不罕见。
内存类型 访问速度 数据检索特点
缓存 需加载整个缓存行
主存 适中 需加载整个页面或块
外存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值