Добрый день!
Просьба подсказать по вопросу расхождения решений моего и предоставленного в "Правильном решении".
У меня Основной класс Solution :
public class Solution {
public static void main(String[] args) {
}
public static Planet thePlanet;
static
{
readKeyFromConsoleAndInitPlanet();
}
public static void readKeyFromConsoleAndInitPlanet() {
try(BufferedReader input = new BufferedReader( new InputStreamReader(System.in)))
{
String key = input.readLine();
if( key.equals(Planet.EARTH) ){
thePlanet = Earth.getInstance();
} else if ( key.equals(Planet.SUN) ){
thePlanet = Sun.getInstance();
} else if( key.equals(Moon.MOON) ){
thePlanet = Moon.getInstance();
} else {
thePlanet = null;
}
} catch (IOException e){
e.getMessage();
}
}
}
Из правильного решения:
public class Solution {
public static void main(String[] args) {
}
public static Planet thePlanet;
static {
try {
readKeyFromConsoleAndInitPlanet();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void readKeyFromConsoleAndInitPlanet() throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String consoleInput = reader.readLine();
switch (consoleInput) {
case Planet.EARTH:
thePlanet = Earth.getInstance();
break;
case Planet.MOON:
thePlanet = Moon.getInstance();
break;
case Planet.SUN:
thePlanet = Sun.getInstance();
break;
default:
thePlanet = null;
break;
}
}
}
Подставил временные переменные в статический блок , которая указывает на старт и в Main указывающую на окончание программы.
В моем решении получилось: 5372
В правильном : 2579
Подскажите, пожалуйста, в чем заключается такой временной выигрыш в "правильном решении" ?
Большое спасибо!
SpiderPig
33 уровень
Вопрос по отпимизации
Обсуждается
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
SpiderPig
30 апреля 2022, 05:11
Большое спасибо!
0
ВадимExpert
22 апреля 2022, 19:31
если память не изменяет, для swith case компилируется более эффективный байт код. но лучше погугли)
0
ВадимExpert
22 апреля 2022, 19:28
если хочешь разобраться почему, погугли
0
ВадимExpert
22 апреля 2022, 19:28
Просто так устроен switch case. Он быстрее работает, чем if else. Особенно для строк
0