我正在做一个国际象棋移动生成器,我有机会用许多“if 语句”替换“while/for 循环”,我想知道添加这 3000 行是否会像理论上那样提高性能,或者只是让算法也一样大要存储在cpu缓存中
我知道这取决于缓存大小(我有 AMD Phenom 8650 Triple Core 2.3),但我真的没有 IDEA
我正在做一个国际象棋移动生成器,我有机会用许多“if 语句”替换“while/for 循环”,我想知道添加这 3000 行是否会像理论上那样提高性能,或者只是让算法也一样大要存储在cpu缓存中
我知道这取决于缓存大小(我有 AMD Phenom 8650 Triple Core 2.3),但我真的没有 IDEA
首先,您可能有几 MB 的缓存,所以我怀疑它会填满整个缓存。
除此之外,除了你的代码之外,CPU 还忙着做很多事情,所以我怀疑整个缓存将只用于你的代码。
除此之外,RAM(你可能有几 GB)到缓存之间的移动是可以忽略不计的。
所以,是的,删除循环(如果它是一个恒定长度的循环)并用显式行替换它应该会给你一个改进。
在这种情况下,改进的数量或百分比实际上更多地取决于语言和编译器,而不是硬件。
请注意,有些语言和情况甚至可能需要更长时间(例如解释性语言)
免责声明:
这种类型的优化使用不多,主要是因为它并没有太大的改进(通常)。
尝试寻找其他地方(或其他方式)来改进。
期望使您的代码更大并具有更大的内存占用,这应该没有任何区别。例如,如果if
要使用最后一个,那么它将类似于 while 循环中的最后一次迭代......但是,如果满足条件,您仍然可以使用诸如 break 或终止循环之类的东西,这类似于有多个 if 循环。
通过优化其他部分和分析使代码更快。