看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) leetcode 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) leetcode C++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) leetcode 預設 問題(Question): 根據我對編譯器的了解 function中若有區域變數被回傳(ex:參數 函數內宣告) 編譯器會對此狀況做優化 但是我手賤 return std::move(output); 結果變快了 wtf 前幾名的是直接寫asm在C++裡面嗎XD 餵入的資料(Input): leetcode預設 預期的正確結果(Expected Output): 變慢 錯誤結果(Wrong Output): 變快不少 從4x%衝到7x% 程式碼(Code):(請善用置底文網頁, 記得排版) 試了幾題都是這樣 return補上std::move都會變快 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.250.43 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1486176314.A.CD8.html
Neisseria: 純推不用。蠻有趣的 ㄎㄎ 02/04 11:35
LPH66: 你可以 Google "Return value optimization" 02/04 12:24
descent: 有沒有做最佳化只能看產生的組合語言 02/04 13:04
jaid: 可能compile參數沒開最佳化 02/04 14:05
wawi2: 不用 在演算法上面改進比較有用 02/05 00:31
storm654321: 有時候多測幾次速度也不太一樣 02/07 09:36
bluesoul: return 補上move會變快要看情況 02/09 17:28
shaopin: 可能因為move 不用make a copy 所以變快 04/22 01:17