在开始时声明变量在java中有更好的性能?

在开始时声明变量在java中有更好的性能?,java,performance,Java,Performance,在代码开头声明变量和在需要时声明变量(在可读性参数之外)在性能上有什么区别吗 假设我有以下两个选项: 选项1: public void methodA () { int amount; long id; String name; //do something } public void methodB () { int amount; //do something long id; //do something Stri

在代码开头声明变量和在需要时声明变量(在可读性参数之外)在性能上有什么区别吗

假设我有以下两个选项:

选项1:

 public void methodA () 
 {
   int  amount;
   long id;
   String name;
   //do something
 }
 public void methodB () 
 {
   int  amount;
   //do something 
   long id;
   //do something
   String name;
   //do something
 }
选项2:

 public void methodA () 
 {
   int  amount;
   long id;
   String name;
   //do something
 }
 public void methodB () 
 {
   int  amount;
   //do something 
   long id;
   //do something
   String name;
   //do something
 }
在我看来,选项2更具美感和可读性,因此是我的首选

Q:但我只是想知道,与这些声明的位置相关的性能是否存在任何差异


由于MaaTiNUS的输入,我发现我的基准示例是错误的(现在删除了),并且我在进一步研究如何编写/使用标号代码。< /P> < P>对于这些情况,我希望在C++中至少看不到性能上的差异。(尽管我也会有点惊讶地看到Java中的真正差异)

如果将变量的定义移动到类似循环的内容中,并且该类型具有重要的初始化,则会出现例外情况:

int func() { 
    int amount;
    long id;
    string name;

    while (something) { 
        // ...
    }
    // ...    
}
vs:


在后一种情况下,需要创建和初始化循环的每一次迭代,这可能比在循环执行之前创建和初始化一次要慢。

您对java或C++的具体问题是什么?这是一个值得回答的问题。java的标杆管理就是这样解释的。您正在测量一些测量错误。@maaartinus感谢您的链接。我正在学习。@maaartinus您是指System.nanoTime()或规则4的不准确(但我无法避免这种影响)不,当基准运行足够长的时间时,这种不精确性是最小的问题。请按照我提供的链接或谷歌出卡钳或jmh。查看我的编辑和任何解释?