Вопрос

Я студент в области компьютерных наук, и я слышу слово «над головой», когда дело доходит до программ и сортов. Что именно это значит?

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Бетонный пример накладных расходов - это разница между «локальной» вызовом процедуры и «удаленной» вызова процедуры.

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

Например:

service.function(param1, param2);

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

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

Итак, в то время как основная реализация будет «стоить то же самое», «накладные» участвуют совсем другое.

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

Это все, кроме самого данных, то есть флаги TCP, заголовки, CRC, FCS и т. Д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top