2015-04-12 18 views
-1

編輯:我不是在這裏要求意見。我不是說,「讓我們辯論什麼是邪惡,什麼不是。」我在說,如果有人決定爲他們的大部分代碼使用靜態類,那麼它們會帶來哪些性能提升?這代表什麼樣的可維護性挑戰?靜態類和方法的大量使用如何提供更好的性能?

我讀了一篇文章今天在計算器上怎麼能這麼快地使用有限的硬件:http://highscalability.com/blog/2014/7/21/stackoverflow-update-560m-pageviews-a-month-25-servers-and-i.html

有一件事引起了我的眼睛,他們採用:

靜態類的大量使用和方法,以簡化和更好的表現。

我讀過意見here和其他地方暗示單身人士和靜態類是「邪惡的」 - 任何全球性是「邪惡的」。我還了解到,那些稱爲「邪惡」的人在某種情況下是正確的 - 但他們通常不知道他們在說什麼。

所以我轉向社區瞭解這一點 - 通過使用大多數靜態類和方法,StackExchange有哪些優點?他們的選擇有哪些軟件可維護性或性能成本?

+0

當你花費太多時間優化代碼時,你最終會寫C代碼。是的,速度更快。不,有人應該阻止你,但是我們的工作不是告訴你停止。 –

回答

2

使用靜態方法和類有兩個效果。

  1. 更少的空檢查,因爲靜態方法調用不需要在接收器上進行空檢查。
  2. 更少的分配導致更少的內存壓力和花在GC上的時間。

當然,這是以更少的接縫爲代價的,您可以拆分系統並進行單元測試。因此維護成本可能更高。這不是關於什麼是好的或「邪惡的」。他們知道權衡,他們已經決定他們想要的表現要比他們想要的可維護性更多。

This博客文章(也part 2)對他們所做的一些性能折衷進行了很好的討論,並且特別討論了您引用的文章中的幾點。

相關問題