Algorithm 存储在缓存中的算法应该有多小?(需要线索)

Algorithm 存储在缓存中的算法应该有多小?(需要线索),algorithm,optimization,cpu-cache,Algorithm,Optimization,Cpu Cache,我正在做一个国际象棋移动生成器,我有机会用许多“if语句”替换“while/for循环”,我想知道添加这些~3000行是否会像理论上那样提高性能,或者只是使算法太大而无法存储在cpu缓存中 我知道这取决于缓存大小(我有一个AMD Phenom 8650 Triple Core 2.3),但我真的不知道它应该不会有任何区别,除了使代码更大和内存占用更大。例如,如果要使用最后一次,如果要使用,那么它将类似于while循环中的最后一次迭代。。。。但是,如果满足某个条件,您仍然可以使用诸如中断或终止循环

我正在做一个国际象棋移动生成器,我有机会用许多“if语句”替换“while/for循环”,我想知道添加这些~3000行是否会像理论上那样提高性能,或者只是使算法太大而无法存储在cpu缓存中


我知道这取决于缓存大小(我有一个AMD Phenom 8650 Triple Core 2.3),但我真的不知道它应该不会有任何区别,除了使代码更大和内存占用更大。例如,如果要使用最后一次
,如果要使用
,那么它将类似于while循环中的最后一次迭代。。。。但是,如果满足某个条件,您仍然可以使用诸如中断或终止循环之类的方法,这类似于使用多个if循环


通过优化其他部分和分析使代码更快。

首先,您可能有几MB的缓存,因此我怀疑它是否会填满整个缓存

除此之外,CPU忙于做代码之外的许多事情,所以我怀疑整个缓存是否只用于代码

除此之外,RAM(您可能有几GB)到缓存之间的移动是可以忽略的

因此,是的,删除循环(如果它是一个等长循环)并用显式行替换它应该会给您带来改进。
在这种情况下,改进的数量或百分比实际上更多地取决于语言和编译器,而不是硬件。
请注意,有些语言和情况可能需要更长的时间(例如解释性语言)

免责声明
这种类型的优化使用不多,主要是因为(通常)没有太多改进。

尝试寻找其他地方(或其他方法)来改进。

过早优化是万恶之源。并读取cpu中的缓存以及它的用途。如果没有关于代码的更多信息,猜测是毫无意义的。谢谢回答!我知道有很多东西需要改进,但是循环展开/展开并不会改变移动生成器策略。。。此外,这是一种技术,因此不会浪费很多大脑周期=P