Re: [問題] 如何優化此程式|補充發問

看板C_and_CPP作者 (-858993460)時間14年前 (2011/03/02 07:13), 編輯推噓1(102)
留言3則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《pichubaby (Pichu)》之銘言: : ※ 引述《truesword ( )》之銘言: : : void tranform(char *s){ : : int i=0; : : for(i; i<strlen(s); i++){ : : if(s[i]>'A' && s[i]<'Z'){ : : s[i] -= 'A'-'a'; :  這行 :   我想問的是  :   大家應該都當作編譯器會自動最佳化,所以為了可讀性可以這樣寫 :   但是假如他的型別為自定義型別 : 例如 :       s[i] -= _T('A') - _T('a'); : 的話,編譯器仍然會跟進去做最佳化嗎? : : } : : } : : } _T 這例子可能不太好 因為至少對 compiler 來說 在變成 L'A' 之後它還是一個 wchar_t 的常數 這個型態的常數相減它還是可以自己做 所以這個情形一樣會處理掉 但我想你要問的是一些自訂型別的 ctor 的樣子 例如 foo('A') - foo('a') (若 class foo 有 foo(char) 及 operator - 的話) 這種我覺得就不一定了 可能最多做到 inline 而不會最佳化到底 畢竟 compiler 並不知道你到底寫了什麼東西在那裡面... (當然 inline 後有沒有可能進一步最佳化也是個問題就是) -- "LPH" is for "Let Program Heal us".... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.254.23.234

03/02 17:19, , 1F
恩 的確用class foo會比較接近原意
03/02 17:19, 1F

03/02 17:19, , 2F
考慮到連結後不在進行最佳化的話,或許就真的不會做到底
03/02 17:19, 2F

03/02 17:20, , 3F
那假如連結後有可能繼續最佳化下去嗎?
03/02 17:20, 3F
文章代碼(AID): #1DRUuTOd (C_and_CPP)
文章代碼(AID): #1DRUuTOd (C_and_CPP)