相关疑难解决方法(0)

如何在Java中编写正确的微基准测试?

你如何在Java中编写(并运行)正确的微基准测试?

我在这里寻找代码示例和注释,说明要考虑的各种事项.

示例:基准测量应该测量时间/迭代或迭代/时间,为什么?

相关:秒表基准可以接受吗?

java benchmarking jvm jvm-hotspot microbenchmark

835
推荐指数
11
解决办法
11万
查看次数

在java中尝试/ catch vs null检查

有时我面对我必须写一段这样的代码(通常它有更多的嵌套if和更复杂的结构,但是对于这个例子来说)

public void printIt(Object1 a){
  if (a!=null){
     SubObject b= a.getB();
     if (b!=null){
         SubObject2 c=b.getC();
         if(c!=null){
             c.print();
         }
     }
  }
}
Run Code Online (Sandbox Code Playgroud)

当我不需要知道什么是失败的,如果什么是空的什么都不做,一种方法可能是

public void printIt(Object1 a){
    try{
      a.getB().getC().print();
    }catch (NullPointerException e) {
    }
}
Run Code Online (Sandbox Code Playgroud)

第二种形式如性能或其他类型的问题是否有问题?

谢谢

java

32
推荐指数
4
解决办法
2万
查看次数

使用try-catch over条件来安全地设置值,并在java中以最小的性能影响

在这里,我的主要目标是安全地设置值,而不会产生性能(速度,内存,CPU等)影响.

我有一个愚蠢的选择(坏的风格)也在下面提到.那么,最好的方法是什么?选项1?选项2?还是另一个?

选项1 :

if(
    animalData!=null && 
    animalData.getBreedData()!=null && 
    dogx.getBreed() != null && dogx.getBreed().getBreedCode() != null && 
    animalData.getBreedData().get(dogx.getBreed().getBreedCode()) != null
){
    dogx.getBreed().setBreedId(animalData.getBreedData().get(dogx.getBreed().getBreedCode()));
}
Run Code Online (Sandbox Code Playgroud)

选项2:

try{dogx.getBreed().setBreedId(animalData.getBreedData().get(dogx.getBreed().getBreedCode()));}catch(Exception e){}
Run Code Online (Sandbox Code Playgroud)

注意:这段代码是一个循环,有数千次迭代.

java performance if-statement exception-handling

6
推荐指数
1
解决办法
98
查看次数