Выбор ответа Junior Задачи на Kotlin обновлено
Быстрый вывод больших ответов
Вопрос
Почему ответ из 10^5 строк лучше собрать в StringBuilder и напечатать одним вызовом?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Каждый println это отдельная синхронизированная запись в поток. System.out на JVM синхронизирован и по умолчанию сбрасывает буфер при переводе строки, поэтому много мелких println медленные.
Варианты ответа
- Каждый
printlnэто отдельная синхронизированная запись в потокправильный ответ printlnв Kotlin медленно форматирует числа черезString.formatStringBuilderсжимает вывод, и его быстрее передать системе- Так требует формат контеста: ответ должен быть одной строкой
Разбор
System.out на JVM синхронизирован и по умолчанию сбрасывает буфер при переводе строки, поэтому много мелких println медленные. Одна запись готовой строки снимает эти накладные расходы. Альтернатива: PrintWriter(BufferedWriter(...)) и flush() в конце. Сжатия нет, формат контеста этого не требует, а числа println печатает.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.