作者LPH66 (-858993460)
看板C_and_CPP
標題Re: [問題] 如何優化此程式|補充發問
時間Wed Mar 2 15:13:31 2011
※ 引述《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
推 pichubaby:恩 的確用class foo會比較接近原意 03/02 17:19
→ pichubaby:考慮到連結後不在進行最佳化的話,或許就真的不會做到底 03/02 17:19
→ pichubaby:那假如連結後有可能繼續最佳化下去嗎? 03/02 17:20