差几倍
运行下面这段程序,填写它打印出来的结果。 BLK = 4 def loads(idxs): cur = -1 n = 0 for i in idxs: b = i // BLK if
自己写:两种遍历的下标序列
生成 8×8 数组「逐行」和「逐列」两种遍历的下标序列,各数出装载了几次。
⚠️ 换了顺序,结果必须一样
两种遍历各求一次和,验证结果完全相同。
数组多大时差距最明显
分别在 4×4、8×8、16×16 上算一次「逐列比逐行多摸几倍块」。
步长是什么
访问一个数组时的「步长」指的是【0】。
步长变大会怎样
步长从 1 变到 4(一块正好装 4 个元素),访问次数减少到四分之一。这时【0】。
步长再大呢
步长继续变大到 8(一块装 4 个),装载次数【0】。
四种步长,各装载了几次
运行下面这段程序,填写它打印出来的结果。 BLK = 4 def loads(idxs): cur = -1 n = 0 for i in idxs: b = i // BLK if
自己写:步长扫描
对步长 1、2、4、8 各算一次「访问次数」和「装载次数」。
算一算浪费了多少
步长为 4 时,每块搬进来 4 个元素却只用了 1 个。算出「搬进来的元素总数 / 真正用到的 / 浪费率」(保留两位小数)。