繁体   English   中英

什么更贵? 转让还是声明?

[英]What is more expensive? Assignment or declaration?

只是一个简单的问题,在Java中什么会更昂贵?

   double test = 5;
   double test1 = 5;

要么

   double test = 5;
   double test1 = test;

都不行 Java有一个非常好的优化器,它将在此示例中生成完全相同的代码。

编译器查看赋值double test1 = test; 并可以得出结论,此时test是一个等于5的常数,可以完全优化分配。

这也是为什么您不必害怕扩展数值的原因。

int timeout = 60 * 60 * 2   // 2 hours in seconds

完全不说,这是微优化的一种情况,它永远不会返回任何值得注意的东西。 担心网络连接会延迟几秒钟。

两者之间的差异应忽略不计。 我想常量会稍微快一点,因为没有加载测试的值,但是实际上...值得您花时间去担心它。 可读性比您可能节省的一两个周期重要得多。

我的第一个冲动就是说,编写一个小的循环程序并对其进行测试。 但是,可能比这更复杂。

编写代码后,Java可以完成各种优化工作,而这正是他们关注的工作。 因此,这使回答变得更加困难,并且可能取决于特定的JRE和代码。

虽然我知道这是一个有趣的学术问题,但实际上,答案可能是“无关紧要”,而您代码的其他部分通常会更多地成为瓶颈。

对于您的特定示例,我觉得“ 5”可能是一种特殊情况,其中有一个静态整数系统池,我知道它们使用字符串来实现。 有人知道吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM