[問題] 陣列運算速度問題
請教一下各位大大
最近有看到一個說法是C/C++在處理陣列時
用指標表示比用陣列表示的速度快
例如A,B是兩個大小M*N的二維double陣列
他們的型態是(double*)[N]
假設我要讓B陣列的元素值為A陣列對應位置的元素的兩倍
有以下作法
for(I=0;I<M;I++)
for(J=0;J<N;J++)
B[I][J]=2*A[I][J];
或
for(I=0;I<M;I++)
for(J=0;J<N;J++)
*(*(B+I)+J)=2*(*(*(A+I)+J));
或可令double *ptr1=&A[0][0],*ptr2=&B[0][0]
for(I=0;I<M*N;I++)
*(ptr1+I)=2*(*(ptr2+I));
請問這幾種寫法的運算速度會有明顯差別嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.230.213.146
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1455984512.A.522.html
→
02/21 00:36, , 1F
02/21 00:36, 1F
→
02/21 00:46, , 2F
02/21 00:46, 2F
→
02/21 00:46, , 3F
02/21 00:46, 3F
推
02/21 00:51, , 4F
02/21 00:51, 4F
→
02/21 00:53, , 5F
02/21 00:53, 5F
→
02/21 00:54, , 6F
02/21 00:54, 6F
→
02/21 00:57, , 7F
02/21 00:57, 7F
推
02/21 01:11, , 8F
02/21 01:11, 8F
→
02/21 01:11, , 9F
02/21 01:11, 9F
→
02/21 01:14, , 10F
02/21 01:14, 10F
→
02/21 01:14, , 11F
02/21 01:14, 11F
推
02/21 01:24, , 12F
02/21 01:24, 12F
→
02/21 01:25, , 13F
02/21 01:25, 13F
推
02/21 01:30, , 14F
02/21 01:30, 14F
→
02/21 10:17, , 15F
02/21 10:17, 15F