假設我用兩種不同的語言編寫了一個程序,我需要比較其性能,我應該關注哪些方面,而不是比較其運行時間?如何比較不同語言之間的性能?
回答
你專注於錯誤的事情。真正的問題是你想使用低級語言(更快)還是高級語言(更慢)。高級語言會爲你做很多事情,它也會做出一定的假設,這會讓它變慢。用高級語言,你正在經歷多層抽象,因此它自然會變得更慢。如果您想要最佳性能,請使用C++。如果你想更快的使用匯編語言。像c#或java這樣的高級語言會更方便,因爲很多強調的管道都是爲你處理的,但是隨着性能的下降。再次,這是伴隨着特定的假設,以及執行的額外代碼,這些代碼可能與您嘗試完成的內容無關。
如果要測試可能需要語言或平臺爲您處理許多下劃線函數的不同語言選擇函數的性能。低級語言也可以讓你直接訪問硬件,讓你調整與之交互的方式。由於控制量和使用非託管代碼的性能提高,所以需要最高性能的遊戲引擎和其他項目通常用C++與諸如Visual Basic的語言編寫。我會首先關注像(圖形等)類別,您需要提高性能,然後從中選擇一些測試。我也確信您可以找到已經發布在互聯網上的比較語言表現的現有測試。
[「C is Efficient」Language Fallacy](http://scienceblogs.com/goodmath/2006/11/the_c_is_efficient_language_fa.php)。 – aioobe 2012-03-16 13:13:03
@aioobe:嚴肅地說,你正在就如何優化C代碼,從一個從來沒有聽說過'restrict'的人提出建議?我的意思是,關於C的表現有很多關於C的表現的迷思,並且別名化在C優化中是一個嚴重的問題,但是這篇文章似乎通過誇大這個問題來發明全新的神話。 – 2012-03-16 13:26:43
呵呵..你明顯知道更多關於C和優化C代碼的知識。我只是張貼鏈接作爲衡量他對一種特定語言的稱讚... – aioobe 2012-03-16 13:29:13
- 1. 比較不同語言的性能和執行速度
- 2. 比較Ext.data.JsonReader和Ext.data.ArrayReader之間的性能
- 3. 如何比較兩個不同TimeStamp之間的持續時間
- 4. 如何比較不同時區之間的時間戳?
- 5. 不同語言之間的Corba通信
- 6. 不同語言的OpenCV性能
- 7. 有Scala和谷歌「轉到」語言(由功能特徵)之間的比較?
- 8. 如何使用knitr來比較不同版本R的性能?
- 9. 如何衡量和比較兩種不同實現的性能?
- 10. Jstring比較in.c語言
- 11. Petalinux和FreeRTOS之間的定性比較
- 12. 比較數組之間的相似性
- 13. c#比較不同語言的字符串
- 14. 是否有比較不同語言的初始列表容量?
- 15. TBB :: scalable_allocator,tcmalloc和jemalloc之間有任何性能比較嗎?
- 16. 本地語言或跨平臺語言(如用於移動應用程序的HTML5)之間的比較
- 17. Stata:變量之間的比較,但個人之間的比較
- 18. 最好的比較不同時區之間時間的方法
- 19. 性能比較
- 20. 如何爲相同屬性比較兩個不同的JavaScript對象(不需要比較實例功能)
- 21. 比較不同機器之間的時間戳
- 22. 柱之間比較
- 23. 語言性能
- 24. 不同語言之間的多處理,如PHP和Python
- 25. 業績比較基準爲不同語言編寫
- 26. react js和Angular js之間的性能比較?
- 27. 在VIEW和TABLE之間檢索數據的性能比較
- 28. ResultSet類型之間的JDBC只讀性能比較
- 29. 類型鑄造程序之間的性能比較
- 30. Zend Lucene和Java Lucene之間的性能比較
功耗?內存佔用?磁盤I/O?網絡I/O? – 2012-03-16 13:04:41
我不知道我在這一個是正確的 - 但我認爲* [程序員.SE](http://programmers.stackexchange.com/)會更好的這個問題.. – amit 2012-03-16 13:05:27
不要以爲有一個即使你可能想要考慮其他使用的資源(尤其是內存),也應該給出明確的答案。取決於績效的哪些方面對你很重要。 – 2012-03-16 13:06:25