Каков эффект SYSO (System.out.println())?

Каков эффект SYSO - System.out.println()? Если мой компьютер выполняет большую работу, такую ​​как извлечение 2 лакхов (приблизительно 2 000 000) записей из базы данных в файл, влияет ли SYSO на время выполнения?


person ANUJ RAI    schedule 10.06.2012    source источник
comment
Вы должны профилировать свою программу. Подготовьте 2 версии одну с SYSO и одну без нее. Запустите их оба несколько раз. Сравните среднее время выполнения. Сообщите о своих результатах.   -  person emory    schedule 10.06.2012


Ответы (2)


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

Вы должны использовать структуру ведения журнала (такую ​​как slf4j, log4j или java util logging), которая допускала бы различные виды выходных данных (sysout, файл и т. д.), а также позволяла бы деактивировать журнал вывода, просто изменив какое-либо свойство в файл конфигурации.

person JB Nizet    schedule 10.06.2012
comment
Действительно, если поток System.out подключен к консоли с графическим интерфейсом, вам придется перерисовывать экран каждый раз, когда данные сбрасываются. - person Stephen C; 10.06.2012
comment
@pst: мы не знаем, является ли цель OP сокращением времени существующей программы или это общий вопрос. Я отредактировал свой ответ, по крайней мере, упомянув ведение журнала, которое в любом случае следует предпочесть sysout. - person JB Nizet; 10.06.2012
comment
@pst: Хорошо, это было очевидно для меня, но тот факт, что это влияет на производительность, также был очевиден, поэтому я добавил немного об измерении. - person JB Nizet; 10.06.2012

Влияние на производительность очень сильно зависит от того, насколько быстро получатель (обычно консоль или файловая система) может читать из потока и насколько велик буфер. Например, когда вы действительно смотрите на консоль, когда программа печатает, это обычно делает ее очень медленной, но когда вы сворачиваете окно консоли, это происходит быстрее.

person jontejj    schedule 03.09.2013