我目前正在開發一個C#MVC REST web api,並試圖在我們設計的兩種可能性中選擇一種。C#靜態方法vs對象實例
沒有太深入我們的設計,我們打算有一個數據訪問類,我們將其稱爲DataSource
。每個DataSource
將需要執行小的,包含的邏輯塊來正確地建立適當的響應。由於希望能夠在將來熱載入代碼,我們不希望在DataSource
上簡單地使用這些函數,而是希望它們由其他程序集提供。我們有這個實施的概念證明,到目前爲止,這是非常好的。
我想要決定的是用一個靜態函數寫一個靜態類,或者編寫一個工廠方法來創建這些類的實例,它們有一個實例方法,稱爲ExecuteQuery
。
爲每個請求創建多個短期對象與調用靜態方法之間的性能考慮因素是什麼?
直觀地說,靜態方法會更快,但我已經期待我會遇到一些頭痛的問題,通過反射來調用它們(以支持熱載代碼要求)。
如果對短期對象沒有巨大的懲罰,那麼他們可能僅憑簡單就贏得勝利。
我們期望的負載相關信息:在300ms以內
- 響應時間 - 800毫秒範圍
- 約2000 Web客戶端的約4000客戶
- 客戶做查詢
- 高峯負荷平均負載每2 - 5秒
- 客戶端每秒查詢1次峯值速率
此外,每個DataSource
將創建最多8個,其中3個平均值爲這些實例。
可能你的意圖使用反射將導致比靜態與實例使用更大的性能影響。正如其他人所評論的那樣,你應該選擇使設計意義最大的形式。另外,由於你有一些預期的指標,你可以嘲笑一個靜態/實例實現,並瞭解你將面臨的開銷。 –