引用:
作者野口隆史
其實雖然現在一大堆多媒體指令集
你可以把它想成以前學生考試,OPEN BOOK的查表函數
將一些通用的計算結果公式化起來,縮短CPU運算的時間
其實現在寫程式做優化,大部分都是交給編譯器來做
99%以上的環境,編譯器幾乎都可以很好的針對CPU架構優化程式性能
少部分例如H.264/H.265會更依賴hand code
也就是手工代碼,這才需要真正理解cpu架構
這樣的方式好處是性能會比編譯器自動優化更強
|
其實不只data-level parallelism
有些時候是要注重指令排程及data structure以避免掉hazard的發生
不過現在大部份都靠compiler及CPU本身的re-order mechanism去解掉
再加上大部份的programmer都只用高階語言來開發,連inline assembly都很少人用
不知道該說是compiler太強還是新一代的programmer太懶?
另外一個現象就是不同領域的人分的太清楚
EE出來的人通常會把自己侷限在固態電子電路的範圍內(我把CPU/system performance搞好就好,software不關我事)
mathmatic/algorithm/software出來的人會把自己侷限在軟體的範圍內(app function有出來就好,系統跑的快不快是那群H/W阿宅的事)
引用:
作者野口隆史
現在移動設備越來越多了
很多寫android程式的人
其實根本不懂優化
不過這其實也不難理解
只會寫JAVA的人本來就比較不會去注意程式優化的部份
因為那是VM的事情
所以之前才會有那種拿20年的quake老code
說JVM下byte code比原本的c/c++ native code還快
然後說JAVA比C/C++還快的笑話發生
|
會這樣的原因是大部份使用者根本就不在乎軟體跑的慢一點或會頓(stutter),反正只要不會lag到完全卡住就好了
程式設計師當然也懶得去檢視自己的演算法是否有效率
以手機來講
我自己的手機CPU是S801,家裡長輩用的是cortex A7的機種
每次我拿他們的手機來用都覺得好慢,滑個螢幕都一頓一頓的
可是他們自己倒是完全不在乎,我每次說要買新手機給他們都說不用
對很多人而言也是一樣,反正只要通訊軟體能接收到正妹傳來的"安安/嗯嗯/去洗澡"訊息就好了
跑的快不快到是其次
