0
A
回答
0
除了Martin所說的,當高級語言通過編譯器時,它基本上被分解成機器可以理解的更簡單的指令。編譯器可能真的很好,或者真的很糟糕,具體取決於你有什麼編譯器。一些編譯器允許很好的優化,而另一些則是準系統。最後,他們都歸結爲機器級代碼。從代碼到機器級代碼的翻譯是編譯器完成速度翻譯的地方。
想象一下,從英語兩個翻譯爲西班牙語。想象一下,你告訴他們翻譯一句話。這句話可能會在翻譯中迷失。一個翻譯最終可能最終會成爲一個更好的翻譯。與編譯器相同。
雖然沒有在翻譯一些細微的變化,你仍然可以在您的消息。這在編程世界中是一樣的。當你有一個高層次的應用程序時,把所有的東西都寫在機器代碼中是沒有意義的,因爲這樣做效率極低。另外,編譯器對組件級別的比較變得非常好。
同樣這一切都取決於最終應用和情理之中的事情。
1
簡單的答案 - 這要看!
如果你的意思是低層次的語言,然後直接編譯代碼(C/C++/Fortran語言)可以運行比那些需要一個虛擬機(Java/C#/ Python)的速度更快的語言。
在實踐中基於VM高級語言沒有傳統上被用在最高性能的要求 - 所以一直比高性能C#高性能的Fortran更多的努力。這也意味着,人與HPC要求,一般不會挑的Java/C#,所以它不適用於那些系統,等等....
這可能爲虛擬機更改變得更聰明。 PyPy是一個典型的例子,它是用python編寫的python,它應該是無用的緩慢 - python不是一個快速的語言,它自己編寫而不是C應該是可怕的,但它通常更快,因爲它可以分析和預編譯某些部分該程序必須在運行時解析。同樣,您可以想象一個C#VM,它可以識別某些評論任務並自動將它們轉換爲並行GPU操作。
相關問題
- 1. 使用-parallel或(和)-vec會使我們的程序運行得更快嗎?
- 2. 運行進程WMI或System.Diagnostics.Process更快嗎?
- 3. 我的應用程序會運行iPhone 4或更低版本嗎?
- 4. 我誤解了這個僞代碼嗎?
- 5. PHP通過代碼解析//註釋或換行更快嗎?
- 6. 我瞭解MsmqPoisonMessageException錯誤嗎?
- 7. 我從根本上誤解了Silverlight的運行方式嗎? (調試問題)
- 8. 在遠程機器上運行代碼
- 9. 超線程使我的代碼運行速度變慢了嗎?
- 10. Ruby或其他語言在Parrot上跑得更快嗎?
- 11. 我誤解了聯結嗎?
- 12. 我使用目標c在xcode上編寫了一個程序。我可以在Windows機器上運行它嗎?
- 13. 我誤解'min'了嗎?
- 14. 可以在遠程機器上運行本地腳本嗎?
- 15. PowerShell可能的錯誤取代,或者我做錯了嗎?
- 16. 如何在更快的遠程機器上運行舊版Mac代碼?
- 17. C#隨機代碼 - 大部分都是錯誤的嗎?
- 18. 如果啓用了代碼分割,打包器會更快嗎?
- 19. 這可以通過線程運行得更快嗎?
- 20. 我可以在多臺機器上運行F#代理嗎?
- 21. 運行程序並在手機上停止,因爲發生了錯誤
- 22. 「一切都是對象」是好事嗎?
- 23. 我瞭解嗎?
- 24. 任何人都可以解釋我這個代碼行嗎?
- 25. 是代碼行還是文本行嗎?
- 26. 代碼的順序可以使這個程序更快嗎?
- 27. 運行時庫本質上是動態庫嗎?
- 28. 讓geoserver運行得更快
- 29. OpenGl中的一切都是白色的,在另一臺機器上運行正常的代碼
- 30. 純Python比Numpy更快嗎?我可以使這個numpy代碼更快嗎?
低級程序=更快。原因在於較高級別的語言通常需要將操作碼轉換爲機器碼的VM,因此存在需要額外處理的額外步驟。說穿了,使用低級語言的指令數量就會少一些 - 因此工作量會減少。我寫的所有內容都是假設使用上述語言的虛構人類(更高和更低)知道她在做什麼。可悲的是,事實是大多數情況並非如此:/ –
編寫得更好的程序運行得更好。 :)這取決於你的意思是多高與低。最低效率的寫作程序最有效的方式可能比大寫的程序效率更高。但高級語言編譯器非常擅長優化,因此編程時間和實時性能的回報並不值得。使高層次程序變得更慢的原因是,使用胖庫和方法可以快速開發,並假設處理能力將補償效率低下。 – lurker