Выбор между java7 и java8 на соревнованиях

Рейтинг: 2Ответов: 1Опубликовано: 27.02.2015

Сегодня столкнулся с с одним моментом, который хотел бы разобрать.

Вот пример простой задачи

Задача

и мое решение

public static void main(String [] args){
    Scanner sc = new Scanner(System.in);
    long n = sc.nextLong();
    long m = sc.nextLong();
    long a = sc.nextLong();

    System.out.print((long)Math.ceil((double) n/a)* (long)Math.ceil((double)m/a));
}

при компиляции на java8 результат - 280 мс. Не очень. Потом решил закомпилировать его на java7 и получил 156 мс Разница очень заметна на такой мелочи.

Вопрос заключается в следующем: почему java8 работает в 2 раза медленее на такой мелочи, и в дальнейшем стоит ли акцентировать внимание на java7?

Ответы

▲ 2Принят

@Gaponec, предположу, что это какие-то инициализационные расходы. Чтобы проверить это предположение, можно завернуть непосредственно код приложения в цикл и прогнать много раз, в этом случае любые инициализационные расходы нивелируются за счет длительного исполнения непосредственно рабочего кода, и у вас будет больше информации, над которой можно подумать.

Плюс, наверняка, существуют java-профайлеры, которые вам помогут выяснить точное время выполнения реального кода.