Что такое «накладные расходы»?

Проверьте, если вы использовали сценарий запуска:

, если ответ «да», вам необходимо отправить свои изменения на свой git-сервер, тогда сценарий увеличит ваш построить номер версии автоматически!

129
задан yuudachi 18 May 2010 в 19:04
поделиться

9 ответов

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

Это как если тебе нужно куда-то поехать, тебе может понадобиться машина. Но было бы много накладных расходов, чтобы заставить машину проехать по улице, так что вы, возможно, захотите прогуляться. Однако накладные расходы того стоят, если вы путешествуете по стране.

В информатике иногда мы используем машины, чтобы ехать по улице, потому что у нас нет лучшего пути или не стоит тратить наше время на то, чтобы «научиться ходить».

157
ответ дан 24 November 2019 в 00:17
поделиться

Значение этого слова может сильно различаться в зависимости от контекста. Как правило, используются ресурсы (чаще всего память и время ЦП), которые не вносят прямого вклада в ожидаемый результат, но требуются используемой технологии или методу. Примеры:

  • Накладные расходы протокола : все кадры Ethernet, IP-пакеты и сегменты TCP имеют заголовки, для соединений TCP требуются пакеты подтверждения. Таким образом, вы не можете использовать всю полосу пропускания, на которую способно оборудование для ваших реальных данных. Вы можете уменьшить накладные расходы, используя пакеты большего размера, а UDP имеет меньший заголовок и отсутствие квитирования.
  • Накладные расходы на память структуры данных : Связанный список требует, по крайней мере, одного указателя для каждого содержащегося в нем элемента. Если размер элементов равен размеру указателя, это означает 50% накладных расходов на память, тогда как массив потенциально может иметь 0% накладных расходов.
  • Накладные расходы на вызов метода : Хорошо спроектированная программа разбита на множество коротких методов. Но каждый вызов метода требует настройки кадра стека, копирования параметров и адреса возврата. Это представляет собой накладные расходы ЦП по сравнению с программой, которая выполняет все в виде одной монолитной функции. Конечно, дополнительная ремонтопригодность того стоит, но в некоторых случаях чрезмерное количество вызовов методов может существенно повлиять на производительность.
36
ответ дан 24 November 2019 в 00:17
поделиться

Вы устали и больше не можете выполнять работу. Вы едите пищу. Энергия, потраченная на поиски пищи, ее получение и фактическое употребление в пищу, потребляет энергию и накладные расходы!

Накладные расходы - это то, что тратится впустую для выполнения задачи. Цель состоит в том, чтобы уменьшить накладные расходы.

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

16
ответ дан 24 November 2019 в 00:17
поделиться

Википедия покрыла нас :

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

15
ответ дан 24 November 2019 в 00:17
поделиться

Накладные расходы обычно относятся к количеству дополнительных ресурсов (памяти, процессора, времени и т. Д.), Которые занимают различные алгоритмы программирования.

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

10
ответ дан 24 November 2019 в 00:17
поделиться

Вы можете проверить Википедию . Но в основном, когда используется больше действий или ресурсов. Например, если вы знакомы с .NET, у вас могут быть типы значений и ссылочные типы. Ссылочные типы имеют накладные расходы на память, поскольку они требуют больше памяти, чем типы значений.

0
ответ дан 24 November 2019 в 00:17
поделиться

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

Например, мы могли бы сказать, что определенный подход может повлечь за собой значительные накладные расходы ЦП, в то время как другой может повлечь за собой дополнительные накладные расходы на память, а еще один может отразиться на накладных расходах сети (и повлечь за собой внешнюю зависимость, например).

Приведем конкретный пример: вычислить среднее (среднее арифметическое) набора чисел.

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

Этот подход почти не требует накладных расходов с точки зрения ЦП, памяти или других ресурсов. (Это тривиальная задача).

Другой возможный подход - «пропустить» ввод в список. перебрать список, чтобы вычислить сумму, а затем разделить ее на количество допустимых элементов в списке.

Для сравнения, этот подход может повлечь произвольные накладные расходы на память.

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

Еще один (возможно, более абсурдный) подход - разместить все входные данные в некоторой таблице SQL в СУБД. Затем просто вызовите функцию SQL SUM для этого столбца этой таблицы. Это переносит накладные расходы на локальную память на какой-то другой сервер и вызывает накладные расходы сети и внешние зависимости от нашего выполнения. (Обратите внимание, что удаленный сервер может иметь или не иметь какие-либо особые накладные расходы памяти, связанные с этой задачей - например, он может немедленно отправить все значения в хранилище).

Гипотетически можно было бы рассмотреть реализацию в каком-то кластере (возможно, чтобы сделать возможным усреднение триллионов значений). В этом случае любое необходимое кодирование и распределение значений (отображение их на узлы) и сбор / сопоставление результатов (сокращение) будут считаться накладными расходами.

Мы также можем говорить о накладных расходах, связанных с факторами, выходящими за рамки собственного кода программиста. Например, компиляция некоторого кода для 32- или 64-битных процессоров может повлечь за собой большие накладные расходы, чем можно было бы увидеть для старой 8-битной или 16-битной архитектуры. Это может повлечь за собой большие накладные расходы на память (проблемы с выравниванием) или накладные расходы ЦП (когда ЦП вынужден корректировать порядок битов или использовать невыровненные инструкции и т. Д.) Или и то, и другое.

Обратите внимание, что дисковое пространство, занимаемое вашим кодом, его библиотеками и т. Д., Обычно не называется «накладными расходами», а скорее называется «следом».«Кроме того, базовая память, которую использует ваша программа (без учета какого-либо набора данных, который она обрабатывает), также называется ее« следом ».

4
ответ дан 24 November 2019 в 00:17
поделиться

Конкретным примером накладных расходов является разница между "локальным" вызовом процедуры и "удаленным" вызовом процедуры.

Например, с классическим RPC (и многими другими удаленными фреймворками, такими как EJB) вызов функции или метода выглядит для кодировщика одинаково, будь то локальный вызов в памяти или распределенный сетевой вызов.

Например:

service.function(param1, param2);

Это обычный метод или удаленный метод? Из того, что вы видите здесь, вы не можете сказать.

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

Таким образом, хотя базовая реализация будет «стоить одинаково», связанные с ней «накладные расходы» будут совершенно другими.

0
ответ дан 24 November 2019 в 00:17
поделиться

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

1
ответ дан 24 November 2019 в 00:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: