Подтвердить что ты не робот

Использует ли System.out.println() эффективность кода?

Я использовал для написания и разработки кодов с system.out.println(). это обычно помогает мне отслеживать ценности и где проблема идет. И после разработанного приложения я не удаляю system.out.println(), потому что это может быть полезно после того, как пользователь найдет какую-либо проблему, и он вернется к нам, что позволяет легко отслеживать, где пошло не так. Но один из моих начальников предложил удалить system.out.println() из кодов, потому что он влияет на эффективный уровень кода. Правильно ли это?

С моей точки зрения, System.out.print() вряд ли берет байты в памяти, так же верно, что разработчик не должен использовать много system.out.println??

Спасибо заранее.

4b9b3361

Ответ 1

Реализация System.out содержит синхронизированный блок в выходном потоке.

От PrintStream.java:

      /**
        * Prints a String and then terminate the line.  This method behaves as
        * though it invokes <code>{@link #print(String)}</code> and then
        * <code>{@link #println()}</code>.
        *
        * @param x  The <code>String</code> to be printed.
        */

       public void println(String x) {
           synchronized (this) {
               print(x);
               newLine();
           }
      }

Включение System.out.println приведет к тому, что весь проект будет работать почти однопоточно, потому что весь поток ожидает блокировки синхронизации и заставит ваше приложение начать сканирование.

Это означает, что ваш начальник прав.

В качестве альтернативы, используйте фреймворк регистрации, например log4j. Вы все равно можете настроить свой лог4j для вывода на System.out.println путем незначительных изменений в конфигурации appender.

Ответ 2

Вы можете использовать журнал, чтобы решить проблему.

Укажите уровень ведения журнала при разработке кода, и вы можете установить уровень ведения журнала в процессе производства.

Список уровней:

DEBUG Level

INFO Level

WARN Level

ERROR Level

FATAL Level

Log4j является общим для использования, см. здесь:

http://logging.apache.org/log4j/2.x/

Что касается cons использования println:

Основная причина в том, что println замедляет скорость вашей программы.

Ответ 3

рекомендуется использовать фреймворки регистрации, такие как SLF4J. Таким образом, используя конфигурацию, вы можете выполнять эти инструкции регистрации на основе environement.

eg - уровень DEBUG для разработчика - WARN on Production, поэтому в процессе регистрации регистрируется только критическое iformation.

Ответ 4

Верно, что вывод на консоль, особенно чрезмерный выход, приведет к снижению производительности приложения. Это также лучший стиль программирования, чтобы не обременять пользователя информацией, которую только вы можете использовать. Вместо этого вы должны использовать встроенные механизмы Java для обработки непредвиденных событий, например. исключения и механизм утверждения. Вы также можете выбрать вариант "verbose" в качестве аргумента командной строки.

Ответ 5

System.out.println может привести к серьезным проблемам с производительностью, если их широко использовать в многопоточной среде (даже в веб-приложениях). Каждый вызов println получает блокировку, поэтому сообщение, отображаемое на консоли, не смешивается с другими сообщениями.

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

Ответ 6

Да, верно, что вызовы System.out.println() должны быть сведены к минимуму. Это связано с тем, что печать на консоли - это операция ввода-вывода, а IO - относительно долгое время. Вот почему, насколько это возможно, мы используем StringBuilder для конкатенации материала, который мы хотим распечатать в памяти. После объединения всего, что мы хотим напечатать в памяти, это время, в которое вы хотели бы позвонить System.out.println().

Вызов System.out.println() не влияет на память.

Ответ 7

Хорошо вести записи файлов, а не system.out.println. Если вы используете это, только devolopers могут видеть на консоли. Вы не можете видеть больше сообщений с этим.

Но вы не можете использовать его для использования в будущем. Если вы используете ведение журнала, вы можете сохранить сообщения в базу данных или файлы.... etc

Ответ 8

Я считаю, что вы говорите о Java в этом контексте и собираетесь проиллюстрировать другой метод против system.out.println().

System.out.print(); // Prints a string of characters only
System.out.println(); // Prints a string of character followed by a line break and that line break is the one which is taking up tons of space if I ain't wrong.

Надеюсь, что это поможет.

Ответ 9

ставит System.out.println свою очень худшую практику. попытайтесь реализовать концепцию каротажа. Используйте log4j ИЛИ log4j2 для сохранения журнала вашей системы. для отслеживания или отладки кода.