看板 C_and_CPP 關於我們 聯絡資訊
最近看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
DrStein:為了可以設中斷點 02/13 23:59
DrStein:原理和 02/14 00:00
DrStein:if(XXX) 02/14 00:00
DrStein: do XXX; 02/14 00:01
DrStein:else 02/14 00:01
DrStein: do YYY; 02/14 00:01
DrStein:一樣 02/14 00:01
alongalone:幾個原因.1)local變數比指標快. 2)thread-safe的寫法 02/14 00:17
alongalone:其實還是要看GetXXX之後的值在func中會不會繼續被使用 02/14 00:19
littleshan:並不會比較快也不會比較safe 開了最佳化後出來都一樣 02/14 01:19
alongalone:little說的也是,如果單純像他寫po的這樣,那的確最佳化 02/14 08:01
alongalone:之後都一樣 02/14 08:01
alongalone:打太快..Orz 是little大... 02/14 08:50
wawi2:未做最佳化前 local var比較快能理解 但第二點safe是為啥? 02/14 10:36
littleshan:沒做最佳化 多一個local var assignment怎麼可能會變快 02/14 11:28