Накладные расходы в компьютерных системах состоят из общих функций, которые приносят пользу всем пользователям или процессам, но не относятся напрямую к какой-либо конкретной задаче. Таким образом, они похожи на накладные расходы в организациях. Накладные расходы компьютерной системы проявляются в более медленной обработке, меньшем объеме памяти, меньшей пропускной способности сети или большей задержке, чем можно было бы ожидать при чтении спецификаций системы. [1] Это особый случай инженерных накладных расходов . Накладные расходы могут быть решающим фактором при проектировании программного обеспечения в отношении структуры, исправления ошибок и включения функций. Примеры вычислительных накладных расходов можно найти в объектно-ориентированном программировании (ООП), функциональном программировании , [ требуется ссылка ] передаче данных и структурах данных.
Программист/инженер-программист может иметь выбор из нескольких алгоритмов , кодировок , типов данных или структур данных , каждый из которых имеет известные характеристики. При выборе между ними следует также учитывать их соответствующие накладные расходы.
В программной инженерии накладные расходы могут влиять на решение о том, включать ли функции в новые продукты или исправлять ли ошибки. Функция, которая имеет высокие накладные расходы, может не быть включена – или требует большого финансового стимула для этого. Часто, даже если поставщики программного обеспечения хорошо знают об ошибках в своих продуктах, выгода от их исправления не стоит вознаграждения из-за накладных расходов.
Например, неявная структура данных или лаконичная структура данных может обеспечить низкие накладные расходы на дисковое пространство, но за счет низкой производительности (компромисс между пространством и временем).
Алгоритмическая сложность обычно указывается с помощью нотации Big O. Это не комментирует, сколько времени требуется для выполнения чего-либо или сколько памяти оно использует, но то, как его увеличение зависит от размера входных данных. Накладные расходы намеренно не являются частью этого расчета, поскольку они различаются от машины к машине, в то время как фундаментальное время выполнения алгоритма — нет.
Это следует противопоставить алгоритмической эффективности , которая учитывает все виды ресурсов — комбинацию (хотя и нетривиальную) сложности и накладных расходов.
Вызов функции вносит небольшие накладные расходы во время выполнения. [2] Иногда компилятор может минимизировать эти накладные расходы, встраивая некоторые из этих вызовов функций . [3]
В кэше ЦП «размер кэша» (или емкость ) относится к тому, сколько данных хранится в кэше . Например, «кэш 4 КБ» — это кэш, который содержит 4 КБ данных. «4 КБ» в этом примере исключают служебные биты , такие как кадр, адрес и информация о тегах. [4]
Надежная отправка полезной нагрузки данных по сети связи требует отправки не только самой нагрузки. Она также включает отправку различных данных управления и сигнализации ( TCP ), необходимых для достижения пункта назначения. Это создает так называемые накладные расходы протокола , поскольку дополнительные данные не вносят вклад в внутреннее значение сообщения. [5] [6]
В телефонии набор номера и время установления вызова являются накладными расходами. В двухсторонних (но полудуплексных ) радиосвязях использование «over» и других сигналов, необходимых для избежания коллизий, является накладными расходами.
Накладные расходы протокола можно выразить как процент байтов, не относящихся к приложению (синхронизация протокола и кадра ), деленный на общее количество байтов в сообщении.
Кодирование информации и данных также вносит накладные расходы. Дата и время "2011-07-12 07:18:47" могут быть выражены как время Unix с 32-битным целым числом со знаком , занимая всего 4 байта. Представленная как строка в кодировке UTF-8 в формате ISO 8601, дата будет занимать 19 байт, что накладные расходы по размеру составляют 375% по сравнению с двоичным целым представлением. В виде XML эта дата может быть записана следующим образом с накладными расходами в 218 символов, при этом добавляя семантический контекст, что это CHANGEDATE с индексом 1. 1310447927
2011-07-12 07:18:47
<?xml version="1.0" encoding="UTF-8"?> <datetime qualifier= "changedate" index= "1" > <year> 2011 </year> <month> 07 </month> <day> 12 </day> <hour> 07 </hour> <minute> 18 </minute> <second> 47 </second> </datetime>
349 байт, полученные из XML в кодировке UTF-8, соответствуют накладным расходам на размер 8625% по сравнению с исходным целочисленным представлением.
Помимо самих файлов, компьютерные файловые системы используют часть пространства для хранения имен и списков каталогов, имен файлов, местоположений секторов файлов, атрибутов, таких как дата и время последнего изменения и создания, способ фрагментации файлов , записанные и свободные части пространства, а также журнал в некоторых файловых системах.
Большое количество небольших файлов создает больше накладных расходов, чем небольшое количество больших файлов.