Учитывая следующие фрагменты кода, какой из них более эффективен?Реальный метод returnSomething () также может возвращать 0 в реальности, поэтому требуется try / catch.
//piece one
long sleepTime = 200;
try{ sleepTime /= returnSomething();}
catch(Exception e){sleepTime = 200;}
private int returnSomething(){
return 1;
}
//or
//piece two
long sleepTime = 200;
if(returnSomething() == 3){sleepTime = 67;}
else if(returnSomething() == 2){sleepTime = 100;}
else if(returnSomething() == 1){sleepTime = 200;}
private int returnSomething(){
return 1;
}
Я пытался выяснить, какой фрагмент кода более эффективен с точки зрения использования процессора, они делаюттоже самое.Я хотел бы знать, подходит ли код, который я написал для тестирования, для этой цели или могу ли я проводить другие виды тестирования кода.Мои результаты показывают, что часть 2 в 9 раз более эффективна (в 9 раз меньше времени для выполнения), хотя она использует жесткие коды операторов if и последний оператор if всегда выполняется.
Полная рабочая программа
public class CodePerformanceTester
{
public static void main(String[] args){
CodePerformanceTester tester = new CodePerformanceTester();
tester.start();
}
public void start(){
double start = System.currentTimeMillis();
long sleepTime = 200;
for(int i=0; i<10000000; i++){
//uncoment here the two lines below
//try{ sleepTime /= returnSomething();}
//catch(Exception e){sleepTime = 200;}
//coment the IF STATEMENTS when above code uncomented
if(returnSomething() == 3){sleepTime = 67;}
else if(returnSomething() == 2){sleepTime = 100;}
else if(returnSomething() == 1){sleepTime = 200;}
}
double end = System.currentTimeMillis();
System.out.println("Execution time for 10 million iteration was "+(end-start)+" ms.");
}
private int returnSomething(){
return 1;
}
}