JAVA: 静态方法在执行期间对性能有相当大的影响吗?

JAVA: Do Static methods make a considerable inpact on performance during execution?

有两个问题在我脑海里盘旋了一段时间,希望有懂行的人帮我解答:)

  1. 是否使用静态方法 good/bad 来提高代码执行期间的性能(时间)?
  2. 内存怎么样?他们使用的内存是否比对应的实例方法多?

静态方法理论上可以比实例方法执行得更好,因为不需要向它们传递 this 指针。但是,我强烈建议不要对这个完全无关紧要的事实给予任何关注,并根据你想要完成的事情来选择静态或实例方法,而不是每次调用它们是否可以快一个或两个时钟周期。

静态方法可以被认为比实例方法使用更少内存的唯一方法是堆栈 space 的一个微不足道的机器字,它们通过不必传递 this 指针。同样,对于任何实际使用场景,这都不值得关注。

那么,对性能有相当大的影响吗?不可能的。

  1. 是也不是。

之所以可以更快,仅仅是因为实际的方法调用可以在编译时解决。给定对象的 class,非静态方法调用需要动态解析该方法的实际实现是什么。

对于 CPU 更密集的方法,这种开销可以忽略不计。 VM 也可以优化非静态调用...

所以我想说最终您需要 运行 一些基准测试以确定您的情况是否有任何优势......我怀疑在大多数情况下收益不会很大。

  1. 堆栈中没有对对象 (this) 的引用,因此再次节省了一些我认为这可以忽略不计。