在开始时声明变量在java中有更好的性能?
在代码开头声明变量和在需要时声明变量(在可读性参数之外)在性能上有什么区别吗 假设我有以下两个选项: 选项1:在开始时声明变量在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
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。查看我的编辑和任何解释?