Выбор ответа Junior Задачи на Kotlin обновлено

Быстрый вывод больших ответов

Вопрос

Почему ответ из 10^5 строк лучше собрать в StringBuilder и напечатать одним вызовом?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Каждый println это отдельная синхронизированная запись в поток. System.out на JVM синхронизирован и по умолчанию сбрасывает буфер при переводе строки, поэтому много мелких println медленные.

Варианты ответа

  1. Каждый println это отдельная синхронизированная запись в потокправильный ответ
  2. println в Kotlin медленно форматирует числа через String.format
  3. StringBuilder сжимает вывод, и его быстрее передать системе
  4. Так требует формат контеста: ответ должен быть одной строкой

Разбор

System.out на JVM синхронизирован и по умолчанию сбрасывает буфер при переводе строки, поэтому много мелких println медленные. Одна запись готовой строки снимает эти накладные расходы. Альтернатива: PrintWriter(BufferedWriter(...)) и flush() в конце. Сжатия нет, формат контеста этого не требует, а числа println печатает.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.