Performance 添加大量方法是否会降低性能?

Performance 添加大量方法是否会降低性能?,performance,Performance,我知道使用一种方法而不是一行接一行地做每件事要清楚得多,所以让我们把这个假设放在一边 我在问自己,调用一个方法是否需要花费更多的时间来调用该方法,想象生成的字节码是相同的。串行程序一步一步比运行方法快,因为你必须花时间扫描代码,找到方法并运行它。但是,这段时间太小,无法对性能产生任何影响 串行程序一步一步比运行方法快,因为您需要花时间扫描代码,找到方法并运行它。但是,这段时间太小,无法对性能产生任何影响 理论上,是的,在大多数情况下,您正在创建一个新的堆栈框架来执行计算。实际上,不,你几乎不会注

我知道使用一种方法而不是一行接一行地做每件事要清楚得多,所以让我们把这个假设放在一边


我在问自己,调用一个方法是否需要花费更多的时间来调用该方法,想象生成的字节码是相同的。

串行程序一步一步比运行方法快,因为你必须花时间扫描代码,找到方法并运行它。但是,这段时间太小,无法对性能产生任何影响

串行程序一步一步比运行方法快,因为您需要花时间扫描代码,找到方法并运行它。但是,这段时间太小,无法对性能产生任何影响

理论上,是的,在大多数情况下,您正在创建一个新的堆栈框架来执行计算。实际上,不,你几乎不会注意到演出的热播。对这个问题的全面讨论有点复杂,它与生成的字节码和运行它的机器/虚拟机的性能有关。

理论上,是的,在大多数情况下,您正在创建一个新的堆栈框架来执行计算。实际上,不,你几乎不会注意到演出的热播。对这个问题的全面讨论有点复杂,它与生成的字节码和运行它的机器/虚拟机的性能有关。

1。您的参数达到了一定的限制,因为调用一个方法会导致创建一个运行时堆栈,其中包含执行代码行、局部变量、程序计数器,如果它是非静态的,那么也是这样

二,。但这不会对高速处理器和强大的IDE产生任何影响

三,。此外,如果你不使用这些方法,那就违反了“不要重复自己”的原则,即应将所有信息和行为保存在一个合理的地方。您的参数达到了一定的限制,因为调用一个方法会导致创建一个运行时堆栈,其中包含执行代码行、局部变量、程序计数器,如果它是非静态的,那么也是这样

二,。但这不会对高速处理器和强大的IDE产生任何影响


三,。此外,如果您不使用这些方法,那么这将违反DRY原则Don Repeat Yourself,即应将所有信息和行为保存在一个合理的位置。

确保将代码模块化是一个好主意,并且不应在性能上产生明显的差异

除了。这很可能会产生巨大的变化,因为这与技术无关,而与人性有关

这是很自然的看线像

a = b + c;

并且认为它们的价格是一样的,它们可能会,但可能不会

问题是,方法是附加代码的磁石,包括附加方法调用

然后,在进行性能调优时,我发现我获取了堆栈样本,它们的深度通常为20-30级。 如果我检查堆栈样本上的每个调用,几乎每个调用都有完美的意义

差不多

所有这一切需要的是一个不是真的必要的呼吁,这些20-30完全打击性能。 如果我只在两个2堆栈样本上看到这样的情况,我知道我发现了一个优化的大机会。 例如,如果我取三个样本,在其中两个样本上,可以节省的时间分数接近2/3。
换句话说,加速因子可能在三倍的范围内。

确保模块化代码是一个好主意,并且不会对性能产生明显的影响

除了。这很可能会产生巨大的变化,因为这与技术无关,而与人性有关

这是很自然的看线像

a = b + c;

并且认为它们的价格是一样的,它们可能会,但可能不会

问题是,方法是附加代码的磁石,包括附加方法调用

然后,在进行性能调优时,我发现我获取了堆栈样本,它们的深度通常为20-30级。 如果我检查堆栈样本上的每个调用,几乎每个调用都有完美的意义

差不多

所有这一切需要的是一个不是真的必要的呼吁,这些20-30完全打击性能。 如果我只在两个2堆栈样本上看到这样的情况,我知道我发现了一个优化的大机会。 例如,如果我取三个样本,在其中两个样本上,可以节省的时间分数接近2/3。
换句话说,加速因子可能在三倍的范围内。

当然,因为这是Java,另一件需要注意的事情是JVM将关注热点方法
当然,由于这是Java,另一件需要注意的事情是JVM将关注热点的方法,并花更多的时间优化它们。