静态类和方法的大量使用如何提供更好的性能?

时间:2015-04-12 22:04:22

标签: c# .net performance static

编辑:我不是在这里征求意见。我不是说,"让我们讨论什么是邪恶,什么不是。"我说如果有人决定只为他们的大部分代码使用静态类,那么它们会带来什么样的性能提升呢?这代表了哪些可维护性挑战?

我今天正在阅读一篇关于StackOverflow如何使用有限硬件如此快速地阅读的文章:http://highscalability.com/blog/2014/7/21/stackoverflow-update-560m-pageviews-a-month-25-servers-and-i.html

引起我注意的一件事是他们使用:

  

为了简单和更好,大量使用静态类和方法   性能

我已经阅读了here和其他地方的观点,这些地方暗示单身人士和静态课程是“邪恶的”#34; - 任何全球性的事物都是“邪恶的”#34;我还了解到那些称呼事物和邪恶的人#34;可能是正确的 - 但他们通常不知道他们在谈论什么。

所以我转向社区来理解这一点 - StackExchange通过使用大多数静态类和方法有什么好处?他们选择的软件可维护性或性能成本是多少?

1 个答案:

答案 0 :(得分:2)

使用静态方法和类有两个效果。

  1. 更少的空检查,因为静态方法调用不需要对接收方进行空检查。
  2. 减少分配,从而减少内存压力和GC花费的时间。
  3. 当然,这是以较少的接缝为代价的,您可以拆分系统并进行单元测试。因此维护成本可能更高。这不是关于什么是好的或者"邪恶的"。他们知道权衡取舍,并且他们已经决定他们希望性能超出他们想要的可维护性。

    This博客文章(也是part 2)对他们所做的一些表现权衡做了很好的讨论,并且在你引用的文章中专门讨论了这些要点。