經過二維數組的訪問方式來測試數據的空間局部性帶來的效率差別性,代碼以下:數組
static void test1(){
int[][] data = new int[10000][10000];
int temp=1;
long start = System.currentTimeMillis();
for(int i=0;i<10000;i++){
for(int j=0;j<10000;j++){
temp=data[i][j];
}
}
long end = System.currentTimeMillis();
System.out.println(end-start);
}測試
static void test2(){
int[][] data = new int[10000][10000];
int temp=1;
long start = System.currentTimeMillis();
for(int i=0;i<10000;i++){
for(int j=0;j<10000;j++){
temp=data[j][i];
}
}
long end = System.currentTimeMillis();
System.out.println(end-start);
}test
第一種方式比第二種方法的效率要高30倍左右,本人測試機器是i5-4210H處理器,具備良好空間局部性的程序會很是高效。通常而言數組比鏈表具備良好的空間局部性,好比前綴樹經過雙數組trie實現會比普通的trie樹高效不少。效率