Компьютер против печати - PullRequest
0 голосов
/ 30 апреля 2018

В моей программе я сделал несколько модификаций для улучшения производительности.

Во-первых, я отменил некоторые трехмерные точечные вычисления, поскольку это были повторяющиеся вычисления.

Во-вторых, я отменил некоторые операторы печати. ​​

Что я заметил, так это то, что второе изменение существенно улучшило производительность, а первое - не так сильно.

Означает ли это, что вычисления с использованием плавающих чисел намного дешевле, чем вывод некоторых данных на консоль? Разве математика с плавающей запятой не считается слишком сложной для вычислений?

1 Ответ

0 голосов
/ 30 апреля 2018

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

Типичная производительность для сложений или умножений с плавающей запятой может составлять задержку в четыре такта процессора по сравнению с одним для целочисленных сложений или умножений.

Форматирование вывода требует много инструкций. Преобразование чисел в десятичное требует деления или выполнения поиска в таблице или выполнения других алгоритмов. Символы, сгенерированные для представления числа, должны быть помещены в буфер. Проверки должны выполняться, чтобы гарантировать, что внутренние буферы не переполнены. Когда буфер заполнен или операция печати завершена и должна быть отправлена ​​на устройство вывода (а не просто сохранена в буфере для будущих операций), тогда должен быть выполнен вызов операционной системы для передачи данных из пользовательской памяти в какой-то драйвер ввода-вывода. Даже простые операции форматирования в буфере могут занимать сотни циклов, а печать, которая требует взаимодействия с файловой системой или другими устройствами, может занимать тысячи циклов. (Фактический верхний предел бесконечен, поскольку печати, возможно, придется ждать, пока какое-то физическое устройство будет готово. Но даже если вся деятельность определенной операции выполняется внутри самого компьютера, операция печати может занять тысячи циклов.)

...