Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以下哪一项在java中更有效?_Java - Fatal编程技术网

以下哪一项在java中更有效?

以下哪一项在java中更有效?,java,Java,我想知道以下哪项是最有效的 int x = 1, y = 2; System.out.print(x+y) 或者 我猜这是第一种,但不确定-谢谢。这将是第二种选择,因为您不需要任何内存进行计算。您只需打印一个数字,而不是将它们相加,然后再打印 这是一个简单的例子,所以在这个级别上性能并不明显 好的做法是将任务适当地分配给不同的职能部门。真正的答案是:在这样的级别上谈论效率毫无意义 请记住,Java程序的总体性能和效率由许多因素决定——例如,为了将字节码转换为机器码,JIT何时/如何启动 担心这

我想知道以下哪项是最有效的

int x = 1, y = 2;
System.out.print(x+y)
或者


我猜这是第一种,但不确定-谢谢。

这将是第二种选择,因为您不需要任何内存进行计算。您只需打印一个数字,而不是将它们相加,然后再打印

这是一个简单的例子,所以在这个级别上性能并不明显


好的做法是将任务适当地分配给不同的职能部门。

真正的答案是:在这样的级别上谈论效率毫无意义

请记住,Java程序的总体性能和效率由许多因素决定——例如,为了将字节码转换为机器码,JIT何时/如何启动


担心这些微妙之处并不能帮助您创建一个有意义的、可维护的、好的OO设计。真见鬼;在您的情况下,根据上下文,编译器甚至可能会不断地折叠并将整个内容转换为println3,因为丢弃这些变量是非常直接的;因此,可能在这两种情况下,编译器都会创建完全相同的字节码


不要误解我的意思:询问/学习/理解编译器、JVM和JIT的功能是公平的。但是:不要假设你可以轻松地将事情分类为比B更有效的类别。

如果你真的是指你提供了所有这样的文本值,那么这种差异根本不存在,至少在你的代码经过JIT编译后是不存在的。在任何一种情况下,运行时都不会进行任何计算。JIT编译器将计算出结果,并将其硬编码到所有使用站点。所涉及的优化技术包括不断传播和不断折叠。

这两种技术的区别实际上并不重要。如果你担心这两种技术之间的毫微秒级差异,那么你优化的东西就错了……定义有效。更快的执行时间?低内存占用?更小的字节码?还有别的吗?当您执行和分析这些时,符合您的标准吗?在您提出这个问题的时间内,其中一个或另一个方面的任何效率提高都已被抵消。如果x、y和z在其他方面未使用,那么这两个可以编译为相同的字节码,并优化所有这些变量。证据在哪里?同意和+1。除此之外,编译器的工作是在这个级别上优化东西,而不是程序员的。程序员的优化应该发生在算法层面。我刚刚开始学习,所以我在寻找最佳实践,所以我重视所有的答案,并会考虑相关情况下的所有建议,所以谢谢。Jamie Thats fair。我已经向这个方向更新了我的问题。编译器创建完全相同的字节码。没有,至少对我来说没有;不过,巧合的是,它创建的字节码指令数量相同。但是JIT可能会优化为println3。@AndyTurner请注意,在这两种情况下,句子都以maybe开头。我没有说它必须发生;但是这种优化实际上是编译器可以做的最简单的事情之一。因此,我认为这并不是完全没有理由假设它会发生。
int x = 1, y = 2, z = 3;
System.out.print(z);