Android — может System.out.println () значительно снизить производительность, как это происходит на ПК

#android #performance

#Android #Производительность

Вопрос:

Системные вызовы очень дороги. System.out.println() может поставить приложение на колени, если выполняется внутри цикла. Влияет ли это аналогичным образом на Android без консоли?

Комментарии:

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

2. Если вы решите протестировать это, пожалуйста, сообщите об этом.

3. В моем курсе по операционной системе мы миллион раз измеряли время выполнения программы на c , которая ничего не записывала (dev / null), и сравнивали его с программой, которая повторяла тот же цикл, но не выполняла пустые системные вызовы, и разница в производительности была существенной.

4. Системные вызовы стоят дорого? Интересно, как тогда вообще функционируют наши операционные системы.

5. @farm ostrich: Это несправедливое сравнение. Попробуйте вместо этого вызвать пустую функцию. Даже это несправедливо. Вы вызываете функцию, которая что-то делает, конечно, на это будет потрачено время. Запись в /dev/null по-прежнему выполняет все, что делает запись в любое другое место, за исключением фактического попадания на жесткий диск. Мне также любопытно, насколько существенным является «существенный».

Ответ №1:

Провел для вас быстрый тест, используя цикл итерации 10000000.

Пустой ~ 200 мс System.out.println() ~ 5600 мс System.out.println («abcdefghijklmnop») ~ 90000 мс

Вам решать, применять это к вашей ситуации, приемлемо это или нет.

Кстати, это ничего не делает, оно печатается в журнале устройства

Комментарии:

1. Интересно… Более старые версии ничего не печатали, вам приходилось переключать его на Log.d или что-то в этом роде… хорошая находка!