精華區beta Programming 關於我們 聯絡資訊
※ 引述《noguest.bbs@ptt.cc (guest)》之銘言: > ※ 引述《leicheong.bbs@bbs.sayya.org (理昌)》之銘言: > : 可是需要留意一點, 在VC系列的compiler, optimization預設是關閉的(/Od). > : 需要手動打開. > : 因為 (尤其是在寫多線程的程式時) 打開optimization會有一定機會出現 > : 「平常跑時會出現可重複的問題, 而在debug模式中卻不會出現」這種 > : 令人頭痛的情況. (Overoptimization) > : 好像部份gcc compiler也有這種情況. (我不太用gcc因此詳細情況不清楚) > : 這樣在討論時是否以沒有optimization下的情況來討論比較正當呢? > 這和 complier 的預設沒有什麼關係, 和目的比較有關. 若只是在討論 > 程式的正確性, 使用 debug 模式是沒問題. 但若是在比較執行的速度, > 比 debug (或 -g) 的程式就沒有意義,畢竟產生出來的 code 並不是以 > 效率為考量. > 事實上, 真正的要比較速率, 除了使用 -O (或 /Od) 外, 正確的作法是還要 > 加上 profiling, 如此才能真正的反映最好的執行效率. 現在談的是coding practice吧. (是否應該把所有#define轉成const宣告) 假設你每個新project都會手動打開optimization好了, 但如果coding 中途遇上了不關上optimization就不能workaround的情況, 難到你要 到這時候才大修嗎? 不過其實不大修也沒關係, 只是產生出來的程式碼大一點而已. P.S.: 我不是不知道用const的好處, 我所提出來的都僅是圍繞 「把所有#define都轉成const是一種錯誤的想法」而「不是」 「(在任何情況下)#define比const宣告好」. -- ※ Origin: SayYA 資訊站 <bbs.sayya.org> ◆ From: ip-84-126-134-202.rev.dyxnet.com