有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

优化Java 8有很多方法会消耗更多资源吗?

例如,当在显微镜下观察代码时,第一个代码块比第二个代码块使用更多的计算时间吗

代码块1:

method1() {
do something;
call method2;
}
method2() {
do something simple like assign a variable value;
}

代码块2:

method1(){
do something;
do something simple like assign a variable value;
}

非常简单,但我想看看这里是否有人知道考虑这一点的价值(例如,优化一个程序以获得最小的计算时间)

作为一个例子,我了解到电路中的门有一个有限的“Delta延迟”,在这个延迟中,当考虑到设计中的时钟速度时,可以加起来看到电路将具有的最大延迟。Java有类似于Delta延迟的东西吗


共 (2) 个答案

  1. # 1 楼答案

    这实际上取决于method2()中的内容以及堆栈上有多少个参数。经验法则是,通过降低代码可维护性将方法组合在一起从来都不是一个好主意,速度上的罕见节省接近于统计上的侥幸,而在逻辑上引入错误或减速的机会要高得多

    如果您真的那么关心性能,我建议您使用例如this tutorial了解JMH和微基准测试。这将非常有启发性,随着时间的推移,你将了解某些模式

    例如,以某种方式编码可以让数据完全驻留在CPU缓存中,从而提供几个数量级的速度,而在绝对最坏的情况下,额外的方法调用可能需要一个百分点

  2. # 2 楼答案

    也许,也许不是。通过一个名为内联的过程,JVM可以像执行第二个代码一样执行第一个代码。见What is method inlining?

    无论如何,在编写非平凡的应用程序时,您应该关注可读性和可维护性,而不是最小的性能增益。在大多数情况下,资源使用方面的差异即使有,也很难明显。另一方面,对于人类读者来说,一个做太多不同事情的漫长方法可能是一种真正的痛苦