2013-09-27 15 views
1

正如我在這篇文章的主題中提到的,我發現OOP比硬編程的結構編程(意大利麪代碼)要慢。OOP比結構化編程慢得多。爲什麼以及如何修復?

我用OOP編寫了一個模擬退火程序,然後刪除一個類並將其寫入主結構。突然它變得更快了。我在OOP程序的每個迭代中都調用了我的移除類。

也使用禁忌搜索進行了檢查。同樣的結果。 任何人都可以告訴我爲什麼會發生這種情況,我如何修復它在其他OOP程序? 有什麼技巧嗎?例如緩存我的類或類似的東西?

(程序已在C#中被寫入)

+1

性能的損失取決於類的用法。例如,創建許多短命對象可能會減慢速度。另一方面,調用方法在C#中相對便宜。通過一些代碼,可能會更容易指出可能的缺陷。此外,您可以使用分析器來確定最昂貴的線路。 –

回答

1

如果你有一個高頻率的循環,這個循環裏面你創建新的對象,不調用其他功能非常多,那麼,是的,你會看到如果你可以避免那些new,比方說通過重複使用對象的一個​​副本,你可以節省大部分時間。

new,構造函數,析構函數和垃圾回收之間,很少的代碼會浪費很多時間。 謹慎使用它們。

+0

謝謝。無論如何,我可以測量在創建對象和訪問舊對象的內存時間上花了多少時間? – AMH

+0

@ user2823226:好的,我使用[*此方法*](http://stackoverflow.com/a/378024/23771)進行常規性能調優,而不考慮語言。堆棧中具有'new'的樣本部分大致告訴我分配對象花費了多少時間。對我而言,「粗略」就夠了。如果您重複使用舊對象,訪問它們的時間比重新創建時間要快兩到三個數量級。 –

相關問題