Tia*_*ago 5 c arrays lookup performance
我有一个适应度函数,它根据位于4D数组上的数据对int数组上的值进行评分.分析器说这个功能占用了80%的CPU时间(需要数百万次).我似乎无法进一步优化它(如果它甚至可能).这是功能:
unsigned int lookup_array[26][26][26][26]; /* lookup_array is a global variable */
unsigned int get_i_score(unsigned int *input) {
register unsigned int i, score = 0;
for(i = len - 3; i--; )
score += lookup_array[input[i]][input[i + 1]][input[i + 2]][input[i + 3]];
return(score)
}
Run Code Online (Sandbox Code Playgroud)
我试图将阵列扁平化为单一维度,但性能没有改善.这是在IA32 CPU上运行的.任何CPU特定的优化也很有帮助.谢谢
您的大部分时间可能都会进入缓存未命中状态.如果你可以优化它们,你可以获得巨大的性能提升.