作者pichubaby (Pichu)
看板C_and_CPP
標題Re: [問題] 如何優化此程式|補充發問
時間Wed Mar 2 15:51:39 2011
※ 引述《LPH66 (-858993460)》之銘言:
: ※ 引述《pichubaby (Pichu)》之銘言:
: : 這行
: : 我想問的是
: : 大家應該都當作編譯器會自動最佳化,所以為了可讀性可以這樣寫
: : 但是假如他的型別為自定義型別
: : 例如
: : 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 後有沒有可能進一步最佳化也是個問題就是)
恩 的確用class foo會比較接近原意
考慮到連結後不在進行最佳化的話,或許就真的不會做到底
那假如連結後有可能繼續最佳化下去嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.182.94
→ loveme00835:...你忘了推文嗎 03/02 15:53
→ pichubaby:=口= 他不能自刪 03/02 17:20
→ uranusjr:這篇要推文也滿麻煩的, 也算有意義, 就別矯枉過正了吧 03/02 19:04
→ akasan:對於 class 的 operator 不要有太多的幻想, 對編譯器來說 03/02 22:12
→ akasan:它就只是個函數呼叫罷了, 資訊夠 compiler 就有機會最佳化 03/02 22:12
→ pichubaby:謝謝樓上 03/03 07:52