2013-05-27 48 views
0

如果我需要改寫:低級程序本質上運行得更快嗎?或者 - 因爲一切都是機器代碼 - 我誤解了嗎?

都寫在低級語言程序基本上是更好的性能,明智的,或者是有真的到底有沒有區別?

+1

低級程序=更快。原因在於較高級別的語言通常需要將操作碼轉換爲機器碼的VM,因此存在需要額外處理的額外步驟。說穿了,使用低級語言的指令數量就會少一些 - 因此工作量會減少。我寫的所有內容都是假設使用上述語言的虛構人類(更高和更低)知道她在做什麼。可悲的是,事實是大多數情況並非如此:/ –

+1

編寫得更好的程序運行得更好。 :)這取決於你的意思是多高與低。最低效率的寫作程序最有效的方式可能比大寫的程序效率更高。但高級語言編譯器非常擅長優化,因此編程時間和實時性能的回報並不值得。使高層次程序變得更慢的原因是,使用胖庫和方法可以快速開發,並假設處理能力將補償效率低下。 – lurker

回答

0

除了Martin所說的,當高級語言通過編譯器時,它基本上被分解成機器可以理解的更簡單的指令。編譯器可能真的很好,或者真的很糟糕,具體取決於你有什麼編譯器。一些編譯器允許很好的優化,而另一些則是準系統。最後,他們都歸結爲機器級代碼。從代碼到機器級代碼的翻譯是編譯器完成速度翻譯的地方。

想象一下,從英語兩個翻譯爲西班牙語。想象一下,你告訴他們翻譯一句話。這句話可能會在翻譯中迷失。一個翻譯最終可能最終會成爲一個更好的翻譯。與編譯器相同。

雖然沒有在翻譯一些細微的變化,你仍然可以在您的消息。這在編程世界中是一樣的。當你有一個高層次的應用程序時,把所有的東西都寫在機器代碼中是沒有意義的,因爲這樣做效率極低。另外,編譯器對組件級別的比較變得非常好。

同樣這一切都取決於最終應用和情理之中的事情。

1

簡單的答案 - 這要看!

如果你的意思是低層次的語言,然後直接編譯代碼(C/C++/Fortran語言)可以運行比那些需要一個虛擬機(Java/C#/ Python)的速度更快的語言。

在實踐中基於VM高級語言沒有傳統上被用在最高性能的要求 - 所以一直比高性能C#高性能的Fortran更多的努力。這也意味着,人與HPC要求,一般不會挑的Java/C#,所以它不適用於那些系統,等等....

這可能爲虛擬機更改變得更聰明。 PyPy是一個典型的例子,它是用python編寫的python,它應該是無用的緩慢 - python不是一個快速的語言,它自己編寫而不是C應該是可怕的,但它通常更快,因爲它可以分析和預編譯某些部分該程序必須在運行時解析。同樣,您可以想象一個C#VM,它可以識別某些評論任務並自動將它們轉換爲並行GPU操作。

相關問題