我正在做一个国际象棋移动生成器,我有机会用许多“if 语句”替换“while/for 循环”,我想知道添加这些 ~3000 行是否会像理论上那样提高性能,或者只是使算法太大,无法存储在 cpu 缓存中
我知道这取决于缓存大小(我有 AMD Phenom 8650 三核 2.3)但我真的没有 IDEA
最佳答案
首先,您可能有几 MB 的缓存,所以我怀疑它是否会填满整个缓存。
除此之外,除了您的代码之外,CPU 还忙着做很多事情,所以我怀疑整个缓存是否只用于您的代码。
除此之外,RAM(您可能有几 GB)到缓存之间的移动几乎可以忽略不计。
所以,是的,删除循环(如果它是一个恒定长度的循环)并用显式行替换它应该会给你带来改进。
在这种情况下,改进的数量或百分比实际上更多地取决于语言和编译器,而不是硬件。
请注意,有些语言和情况甚至可能需要更长的时间(例如解释性语言)
免责声明:
这种优化用得不多,主要是(通常)提升不大。
尝试着眼于其他地方(或其他方式)进行改进。
关于algorithm - 存储在缓存中的算法应该多小? (需要线索),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6780272/