2011年5月26日 星期四

[閒聊] 程式語言的效能

說到效能的話,都高手來寫的話,當然組語最快啦! XD
有高階語言的出現,自然有其目的(不然就都用組語就好啦)。

一來,可以使程式碼更容易閱讀理解,
再者,開發時能忽略許多與正在開發的產品無關的底層,
也比較容易寫出容易理解並維護的程式碼,
容易上手,甚至可以達到跨平台的效果。

越是高階抽象的語言,越有這樣的現象。
然而因為跟底層的距離拉遠了,層層轉換的情況自然使得效能比較差。
效能可以改進,讓效能接近原來的效能,但是仍然會有差距,
可是換來的就是上述的優勢。

以遊戲中的兵器來比較,
神兵α:
攻擊100(效能)、武器出鞘需15分(開發)、修復需10天(維護)、部份區域可用(平台)。
需求等級:100(上手難度)。

神兵β:
攻擊85(效能)、武器出鞘需1分(開發)、修復需半天(維護)、全區域可用(平台)。
需求等級:70(上手難度)。

要怎麼選?

一般的情況,α還沒出鞘,怪可能就被β刷死了…α出鞘之後也沒怪可以刷了。
而且α給新手隊友還拿不起來…
但是如果遇到要瞬間攻擊輸出高的(也許怪會回血),β刷半天刷不死,還是要靠α。

換成軟體來說,
一般情況,用高效能語言寫產品也許還沒做出來,
其他效能稍差的語言也許早就做出來賣了。
但是遇到某些需要高效率的產品,
高階語言的效能也許就是撐不到那個等級,此時就是高效能語言發揮的時候。

效能 vs 開發與維護的人力及時間成本、跨平台的考量、上手速度,
要不要拿效能來換其他的優勢,
最終還是要看實際應用的情況來決定吧!?

重構也常會被提到可能會拖慢效能,
同樣也是拿可讀性、易擴充性、維護性等去換,所以不重構嗎?
重構後要去調效能,在好讀的程式碼堆裡面找瓶頸來改,一般來說會比較容易。

如果 C/C++ 要看不起 Java/C#/Python/Ruby…etc 的效能,
那組語要瞧不起 C/C++ 的效能嗎…?
語言只是一種工具罷了!


這篇算是亂打的一篇文章…
只是隨手寫一下最近看文章的一點想法 XD

沒有留言: