編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
Linux - terminal
問題(Question):
在32bit 64bit執行下列迴圈
發現在32bit花了15ms, 在64bit卻只要3ms
不明白主要是什麼機制造成, 是因為data aligment?
網路上也找不太到資料, 還請大大解惑, 感謝
此外如果想要在32bit上加速執行時間, 有什麼方法或編譯方式可以用?
int y = 16500;
for (int i = 0; i < 1000; ++i) {
ptr1 += (y >> 16)*2000;
for (int j = 0; j < 2000 ; j += 2) {
ptr2[1] = ptr2[0] = ptr1[0];
ptr1 += 1;
ptr2 += 2;
}
ptr2 += 4000;
y += 33000;
}
註: uint8_t *ptr1 , uint8_t *ptr2