自己写:一个访问代价计量器
给一串下标,交出三样:访问次数 / 装载次数 / 浪费率(round 到两位,一个都没浪费就是 0.0)。
优化一段真实的遍历
把逐列求和改成逐行,用计量器量出前后的块数,并验证结果一致。
合并两趟再优化一次
在逐行的基础上,把「求和」和「求最大值」两趟合成一趟。给出合并前后的搬运趟数和两个结果。
⚠️ 只看一个指标会挑错方向
两种改法:一种把访问次数减半(步长改成 2),一种把顺序改成逐行。用装载次数各评一次,看哪一种真的有用。
收官:出一份优化报告
对同一段遍历,交出一份完整报告:改前块数 / 改后块数 / 降了几倍 / 结果一致否。
在真机上怎么看进程各段的内存布局
在真机上想看一个进程 text/data/heap/stack 各段怎么摆,最靠谱的办法是【0】。 (判分只看你在受控容器里的真机产物,纯本机、纯 Python,没有 gcc。)
三段加起来一共多大
真机:某进程 text=12、data=8、heap=40(KB),python3 -c "print(12+8+40)" 打印几? (判分只看你在受控容器里的真机产物,纯本机、纯 Python,没有 gcc。)
查:按大小排的段序
场景:~/lab/mem.py 是只读工具,读 ~/lab/segmap.txt 里的段表。 任务:跑 python3 ~/lab/mem.py --segs,读它报的 段序 = X(按占用从大到小,形如 heap-stack-text-d
查:段基址
场景:同一个只读工具,看这段内存映射的基址。 任务:跑 python3 ~/lab/mem.py --base,读它报的 基址 = X(形如 0x4a10),到 ~/对照表.txt 查 X 填进来。 (判分只看你在受控容器里的真机产物,纯本
查:总大小
场景:同一个只读工具,看各段加起来一共多大。 任务:跑 python3 ~/lab/mem.py --total,读它报的 总大小 = N(KB),到 ~/对照表.txt 查 N 填进来。 (判分只看你在受控容器里的真机产物,纯本机、纯 P