[問題] 不把parameter當作working variable

看板C_and_CPP (C/C++)作者 (改)時間14年前 (2012/02/13 23:50), 編輯推噓3(3012)
留言15則, 4人參與, 最新討論串1/1
最近看code有看到一些函數寫成類似這樣: void func(int* n) { int tmp = GetXXX(); *n = tmp; } 為什麼不寫成: void func(int* n) { *n = GetXXX(); } 不把函數的parameter當作working variable,這樣有什麼好處嗎?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.240.131.215

02/13 23:59, , 1F
為了可以設中斷點
02/13 23:59, 1F

02/14 00:00, , 2F
原理和
02/14 00:00, 2F

02/14 00:00, , 3F
if(XXX)
02/14 00:00, 3F

02/14 00:01, , 4F
do XXX;
02/14 00:01, 4F

02/14 00:01, , 5F
else
02/14 00:01, 5F

02/14 00:01, , 6F
do YYY;
02/14 00:01, 6F

02/14 00:01, , 7F
一樣
02/14 00:01, 7F

02/14 00:17, , 8F
幾個原因.1)local變數比指標快. 2)thread-safe的寫法
02/14 00:17, 8F

02/14 00:19, , 9F
其實還是要看GetXXX之後的值在func中會不會繼續被使用
02/14 00:19, 9F

02/14 01:19, , 10F
並不會比較快也不會比較safe 開了最佳化後出來都一樣
02/14 01:19, 10F

02/14 08:01, , 11F
little說的也是,如果單純像他寫po的這樣,那的確最佳化
02/14 08:01, 11F

02/14 08:01, , 12F
之後都一樣
02/14 08:01, 12F

02/14 08:50, , 13F
打太快..Orz 是little大...
02/14 08:50, 13F

02/14 10:36, , 14F
未做最佳化前 local var比較快能理解 但第二點safe是為啥?
02/14 10:36, 14F

02/14 11:28, , 15F
沒做最佳化 多一個local var assignment怎麼可能會變快
02/14 11:28, 15F
文章代碼(AID): #1FEJ4jAz (C_and_CPP)
文章代碼(AID): #1FEJ4jAz (C_and_CPP)