有人可以先解释一下展开循环(在 C/C++ 中)在什么时候成为有用的优化?
其次,与第一个问题相关,在什么时候不应该进一步展开展开?是否应该始终将展开操作拆分为 2 的幂的批次?或者它是否与您的 CPU 可以执行多少计算有关?一个比率是缓存行大小的乘数?ETC
例如,如果我有一个从 0 到 99 的 for 循环会更好/我如何确定哪个(除了反复试验)- 是否有科学方法:
- 每个循环 0 到 49 和两个“操作”
- 每个循环 0 到 24 和四个“操作”
- 每个循环 0 到 19 和五个“操作”
- 每个循环 0 到 9 和 10 个“操作”