stringtranslate.com

Накладные расходы (вычисления)

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

Разработка программного обеспечения

Выбор реализации

Программист/инженер-программист может выбирать из нескольких алгоритмов , кодировок , типов данных или структур данных , каждый из которых имеет известные характеристики. При выборе среди них следует также учитывать соответствующие накладные расходы.

Компромиссы

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

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

Сложность программного обеспечения во время выполнения

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

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

Примеры

Компьютерное программирование (время выполнения и вычислительные затраты)

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

Кэш процессора

В кэше ЦП «размер кэша» (или емкость ) означает, сколько данных хранит кэш . Например, «кеш 4 КБ» — это кеш, в котором хранятся 4 КБ данных. «4 КБ» в этом примере исключают служебные биты , такие как информация о кадре, адресе и теге. [1]

Связь (накладные расходы на передачу данных)

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

В телефонии набор номера и время установления вызова являются накладными расходами. В двусторонней (но полудуплексной ) радиосвязи использование «over» и других сигналов, необходимых для предотвращения коллизий , является накладными расходами.

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

Кодировки и структуры данных (затраты на размер)

Кодирование информации и данных также приводит к накладным расходам . Дата и время «2011-07-12 07:18:47» могут быть выражены как время Unix с помощью 32-битного целого числа со знаком 1310447927 , занимающего всего 4 байта. Представленная в виде строки в формате UTF-8 в формате ISO 8601, дата будет занимать 19 байт, что на 375% превышает размер двоичного целочисленного представления. В формате XML эту дату можно записать следующим образом с дополнительными 218 символами, добавив при этом семантический контекст, что это CHANGEDATE с индексом 1. 2011-07-12 07:18:47

<?xml version="1.0"coding="UTF-8"?> <datetime qualifier= "changedate" index= "1" > <год> 2011 </year> <месяц> 07 </month> <day> 12 </day> <час> 07 </hour> <минута> 18 </ минута> <секунда> 47 </ секунда > </datetime>        

349 байт, полученные из XML в кодировке UTF-8, соответствуют издержкам размера на 8625 % по сравнению с исходным целочисленным представлением.

Файловые системы

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

Множество маленьких файлов создают больше накладных расходов, чем небольшое количество больших файлов.

Смотрите также

Рекомендации

  1. ^ Сорин, Дэниел Дж. (2009). «Кэши и иерархии памяти» (PDF) . Проверено 13 марта 2019 г.Презентация по курсу «Архитектура компьютеров».
  2. ^ Распространенные проблемы с производительностью сетевых приложений. Часть 1: Интерактивные приложения, Технические статьи по Windows XP, Microsoft.
  3. ^ Накладные расходы протокола в сетях IP/ATM, Суперкомпьютерный центр Миннесоты