如何对程序进行密集加载存储,以便有最大的内存引用和可忽略的计算(甚至不包括循环开销!)
答案 0 :(得分:2)
gcc
在此代码上使用-funroll-loops
:
int main (int argc, char** argv) {
int a = 5;
int b = 10;
int c;
int i;
while (1) {
for (i = 0; i <= 2147483647; i++) {
c = b;
b = a;
a = c;
}
}
return 0;
}
答案 1 :(得分:1)
使用具有大量分散读/写的大型数组来最大化缓存未命中。如果你的目标是编写一个只运行内存的程序 - 在随机选择的索引中将随机值写入数组。
答案 2 :(得分:0)
使用大量volatile
个变量,这些变量存储在内存中,但我不确定这是否能解答您的问题。
答案 3 :(得分:0)
在程序的可能输入和可能的输出之间制作地图。
输出的计算需要由另一个程序或手工完成。