2011-06-27 140 views
6

我一直在圍繞w /規範模式來處理和包含我們的c#/ mvc應用程序中的業務邏輯。到現在爲止還挺好。我確實有一個問題 - 因爲我們將在堆上創建許多規範對象,這會不會以任何方式影響性能,比如說創建處理業務邏輯的輔助方法?謝謝!規範模式和性能

+1

堆分配不是在.NET中擔心的事情,因爲a)堆壓縮意味着分配通常非常便宜,b)垃圾收集意味着堆分配的風險較小(因爲您不必跟蹤對象生存期仔細。) –

回答

5

雖然我確實有一個問題 - 因爲我們將在堆上創建一些規範對象,會以任何方式影響性能,比如創建處理業務邏輯的輔助方法?

當然,它會影響性能,您編寫的每一行代碼和設計選擇會以某種方式影響性能。這不太可能有意義,成爲應用程序中的瓶頸或者值得關注,因爲這幾乎肯定是一個過早優化的例子。現在,您應該專注於正確建模您的域,並編寫極其清晰和可維護的代碼。更關注開發人員的生產力而不是機器生產力。 CPU週期很便宜,而且供應幾乎無限。開發者週期並不便宜,而且供應也不是無限的。

但是隻有您能知道它是否會影響真實世界中應用程序對實際數據的實際使用。我們不知道,因爲我們不知道你的域名,不瞭解你的用戶,不知道你期望的性能等。即使我們知道這些東西,我們仍然無法知道你的用戶,不會給你一個強大的答案,因爲你可以通過從現成的桌面上剔除一個探查器並查看你的應用程序實際上做了什麼。

+0

謝謝,是的,我同意你對許多影響因素的評論。因爲我試圖遏制我們的業務邏輯,所以我發現規範模式很有用(可重用的業務邏輯,易於進行單元測試),但是我們的領導並不相信,並且感覺使用幫助程序的代碼更少,對象更少,可以實現相同的結果方法。 – rh1200

2

,因爲我們將創建一批在堆上規範的對象,會以任何方式

大多數設計模式權衡一些開銷設計的潔淨度影響性能 - 這次也不例外。通常,規格添加的內存量非常少(通常是幾個參考,就是這樣)。另外,他們傾向於添加一些額外的方法調用與定製邏輯。

這就是說,我不會試圖過早地優化這個。這裏的開銷非常小,所以我很懷疑它會在任何真實世界的應用程序中引人注目。

+0

應該關注堆遍歷問題,因爲規範可能以任意順序堆疊在任何數目中? – RBZ