2012-03-16 92 views
1

假設我用兩種不同的語言編寫了一個程序,我需要比較其性能,我應該關注哪些方面,而不是比較其運行時間?如何比較不同語言之間的性能?

+0

功耗?內存佔用?磁盤I/O?網絡I/O? – 2012-03-16 13:04:41

+0

我不知道我在這一個是正確的 - 但我認爲* [程序員.SE](http://programmers.stackexchange.com/)會更好的這個問題.. – amit 2012-03-16 13:05:27

+0

不要以爲有一個即使你可能想要考慮其他使用的資源(尤其是內存),也應該給出明確的答案。取決於績效的哪些方面對你很重要。 – 2012-03-16 13:06:25

回答

1

你專注於錯誤的事情。真正的問題是你想使用低級語言(更快)還是高級語言(更慢)。高級語言會爲你做很多事情,它也會做出一定的假設,這會讓它變慢。用高級語言,你正在經歷多層抽象,因此它自然會變得更慢。如果您想要最佳性能,請使用C++。如果你想更快的使用匯編語言。像c#或java這樣的高級語言會更方便,因爲很多強調的管道都是爲你處理的,但是隨着性能的下降。再次,這是伴隨着特定的假設,以及執行的額外代碼,這些代碼可能與您嘗試完成的內容無關。

如果要測試可能需要語言或平臺爲您處理許多下劃線函數的不同語言選擇函數的性能。低級語言也可以讓你直接訪問硬件,讓你調整與之交互的方式。由於控制量和使用非託管代碼的性能提高,所以需要最高性能的遊戲引擎和其他項目通常用C++與諸如Visual Basic的語言編寫。我會首先關注像(圖形等)類別,您需要提高性能,然後從中選擇一些測試。我也確信您可以找到已經發布在互聯網上的比較語言表現的現有測試。

+0

[「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

+0

@aioobe:嚴肅地說,你正在就如何優化C代碼,從一個從來沒有聽說過'restrict'的人提出建議?我的意思是,關於C的表現有很多關於C的表現的迷思,並且別名化在C優化中是一個嚴重的問題,但是這篇文章似乎通過誇大這個問題來發明全新的神話。 – 2012-03-16 13:26:43

+0

呵呵..你明顯知道更多關於C和優化C代碼的知識。我只是張貼鏈接作爲衡量他對一種特定語言的稱讚... – aioobe 2012-03-16 13:29:13