※ 引述《freaky.bbs@ptt.cc (jon)》之銘言:
> C++ 的確可以自行撰寫 custom allocator 來配置記憶體,不過又回到老問題了,
> unmanaged code 什麼事都可以做,要寫出一個不會有 heap fragmentation
> 的 allocator 是有實際上的困難的,最佳化也是,對於無從預測的行為要如何
> 最佳化?
你把最佳化當成是無上限的喔
最佳化並不是 cpu 花下去, code 就無限制的越來越快
就算是 profiler 把所有熱點都找了出來, 最佳化還是有限的
最多就是幫你省點 ram/cache, 其它的還是要人自己去改
最佳化並不能幫你更改程式的流程
何況 jit 的 profiler 只是把熱點用比較好的最佳化,
非熱點用直譯或省 cpu 的無最佳化編譯
目的只是為了省 jit 占的 cpu time, 讓 loading 快一點, 並不是要超越 compiler
profiler 本身也是 cpu 的負擔
garbage collection 也不是萬能的, 雖然說像 java 沒有指標,
可以把記憶體全部重排搾出空間來, 但這樣 jit 產生的 code
也要全部重來, 所以實作上也不能如此, 寫 code 的人還是要注意分配記憶體
clr 更是無法避免 heap fragmentation, 指標的值一但拿來用,
你要如何收回中間的 gap?
--
┌─────◆KKCITY◆─────┐ ◢ ◤ 找歌最方便 KKBOX 歌詞搜尋!!
│ bbs.kkcity.com.tw │ \^_^ / ★http://www.kkbox.com.tw★
└──《From:59.120.53.7 》──┘ ◤ 唱片公司授權,音樂盡情下載
--