Re: [討論] 關於for的變數宣告
看板C_and_CPP (C/C++)作者tropical72 (藍影)時間15年前 (2011/06/24 20:40)推噓14(14推 0噓 24→)留言38則, 14人參與討論串2/2 (看更多)
※ 引述《chengen0402 (藏)》之銘言:
: 我最近不斷被同學提醒for的寫法
: 我原本的寫法
: for(int i=0 ; i<n ; ++i)
: for(int j=0 ; j<n ;++j)
其實不少 c++ 的書都建議:用到時再用就好,
意思是不少書都建議你原本的寫法。
: 同學一直覺得這樣太慢 一直跟我說可以改成
: int i,j;
: for(i=0 ; i<n ; ++i)
: for(j=0 ; j<n ; ++j)
我比較想請教您同學的是,
請問這樣比較快的依據是什麼?
看編出來的 asm code ? 還是實際測時的結果?
方便的話請拿一點點數據出來參考,以解我的疑惑。
---------
如果真的是要速度的話,倒是有幾種說法
(1)
int i=0, j=0; 改成 int i(0), j(0);
(2)
後置轉前置 (這你有用了)
原因:inc / add 差異
(3)
for(int i=0; i<n; ++i) 適當改成
int i(n-1);
while(i>=0) {..... , --i);
原因:zero flag
認為 (3) 這類較快的人,原因在於,和 0 做比較速度比和其他常數做比較速度為快
( zero flag ),甚至可以 != 就用 !=,這在硬體用 xor 就完成。
甚至也有人說用 ( >= 取代 < ) 還是 ( <= 取代 > ) 可以比較「省電」,
這種說法我也很難去驗證。
以上三種說法都有人反駁,因 compiler 都應要有能力去優化這些地方,
coder 不該去管這些東西,也就是說,用你原本的寫法便可。
---------------
這些真的都是小問題,即使有差異,有沒有差到 3% 我都很懷疑,
但演算法動不動就是差幾千、幾萬倍,除非整個專案已經擠到沒地方擠了,
不然做這種研究效益、正確性真的不佳。
---------------
但接下來這問題倒是沒聽別人討論
for(int i=0; i!=10; ++i){
...
}
「據說」i 的 scope 每個 compiler 定義不同,
不知其他版友有何看法。
--
YouLoveMe() ? LetItBe() : LetMeFree();
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.73.222
推
06/24 20:41, , 1F
06/24 20:41, 1F
→
06/24 20:41, , 2F
06/24 20:41, 2F
→
06/24 20:45, , 3F
06/24 20:45, 3F
推
06/24 20:46, , 4F
06/24 20:46, 4F
→
06/24 20:47, , 5F
06/24 20:47, 5F
→
06/24 20:47, , 6F
06/24 20:47, 6F
推
06/24 20:47, , 7F
06/24 20:47, 7F
→
06/24 20:48, , 8F
06/24 20:48, 8F
→
06/24 20:48, , 9F
06/24 20:48, 9F
→
06/24 20:50, , 10F
06/24 20:50, 10F
→
06/24 20:51, , 11F
06/24 20:51, 11F
推
06/24 20:51, , 12F
06/24 20:51, 12F
→
06/24 20:52, , 13F
06/24 20:52, 13F
→
06/24 20:52, , 14F
06/24 20:52, 14F
→
06/24 20:52, , 15F
06/24 20:52, 15F
推
06/24 20:54, , 16F
06/24 20:54, 16F
推
06/24 21:27, , 17F
06/24 21:27, 17F
推
06/24 22:07, , 18F
06/24 22:07, 18F
→
06/24 22:07, , 19F
06/24 22:07, 19F
→
06/24 22:07, , 20F
06/24 22:07, 20F
→
06/24 22:08, , 21F
06/24 22:08, 21F
→
06/24 22:08, , 22F
06/24 22:08, 22F
推
06/24 22:30, , 23F
06/24 22:30, 23F
推
06/24 23:18, , 24F
06/24 23:18, 24F
推
06/25 04:52, , 25F
06/25 04:52, 25F
→
06/25 09:26, , 26F
06/25 09:26, 26F
→
06/25 09:26, , 27F
06/25 09:26, 27F
→
06/25 09:27, , 28F
06/25 09:27, 28F
推
06/25 10:04, , 29F
06/25 10:04, 29F
→
06/25 14:15, , 30F
06/25 14:15, 30F
→
06/25 14:15, , 31F
06/25 14:15, 31F
推
06/25 15:08, , 32F
06/25 15:08, 32F
→
06/26 08:35, , 33F
06/26 08:35, 33F
推
06/26 08:42, , 34F
06/26 08:42, 34F
→
06/26 17:48, , 35F
06/26 17:48, 35F
推
06/26 23:39, , 36F
06/26 23:39, 36F
→
06/27 23:01, , 37F
06/27 23:01, 37F
→
06/27 23:01, , 38F
06/27 23:01, 38F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章