参考地点。http://en.wikipedia.org/wiki/Locality_of_reference。所以它就像迭代一个小的int数组会比迭代一个linkedList更快。因为数组是连续的,并且所有数组都可以放入 cpu 缓存中,并且缓存未命中率会更少。
但我想要一个简单的 int 数组和一个 volatile 数组之间的比较。AFAIK 迭代易失性数组将导致每次读取易失性,这可能在某些系统中导致每次读取时更新缓存。
int[] arr; // assume here i have declared and initialized it.
int sum = 0;
for(int i=0;i<arr.length;i++){
sum = sum + arr[i];
}
挥发性对应部分
volatile int[] arr; // assume here i have declared and initialized it.
int sum = 0;
for(int i=0;i<arr.length;i++){
sum = sum + arr[i]; // volatile read everytime
}
那么它们是否相同,或者编译器会将所有易失性读取变成单个易失性读取(编译器优化)