Сегодня я обнаружил довольно забавную вещь, связанную со вкладкой "Запуск".
Будем тестировать следующий код на Java 7:
public class CurrentTime {
public static void main(String[] args){
System.out.println(System.currentTimeMillis());
}
}
Запустив его сколько угодно раз, на выходе мы всегда будем получать одно и то же число A, даже если между запусками обновлять страницу. Если в конец кода добавить пробел, то на выходе всегда будет другое число B.
Но если же стереть этот пробел, то неожиданно на выходе опять появится наше знакомое число A!
Изменение ввода дает тот же эффект, что и добавление пробела в код. На ссылках http://codeforces.me/contest/1/customtest и http://codeforces.me/contest/327/customtest результаты абсолютно одинаковые. В разных браузерах, однако, получаются разные числа.
Мораль такова: если вы хотите, чтобы ваш код действительно тестировался каждый раз, когда вы нажимаете на кнопку "Запустить", добавляйте пробел в конец кода.
Впрочем, все вышеописанное может оказаться багом, проявляющемся только на моем компьютере, поэтому предлагаю всем желающим повторить этот эксперимент.
Не, где-то же писали, что результаты кешируются и так и должно быть. У меня также на других языках
А если отправить код с пробелом, получить число X. Потом отправить тот же код с пробелом — будет опять X? UPD: Да
Это не баг, это кэш. Зачем один и тот же код запускать еще раз если он точно такой же и ввод точно такой же?
Посылка 3553789 и 3555423. Разница незначительна. Первая работает 1609 мс, вторая 1045 мс. Причина видимо в разной загруженности сервера. Если хочется перепроверить время, то обязательно что-то менять в коде?
Почему бы тогда не написать "Вы уже запускали точно такой же код", вместо "Исполняется..." в окошке вывода? Просто при тестировании на TL может сильно не повезти с первым запуском, а из-за постоянного времени работы можно подумать, что решение быстрое и спокойно его послать.