В информатике , накладные расходы любое сочетание избыточного или косвенного время вычисления, память, пропускная способность, или других ресурсы, которые необходимы для выполнения конкретной задачи . Это частный случай инженерных накладных расходов . Накладные расходы могут быть решающим фактором при разработке программного обеспечения в отношении структуры, исправления ошибок и включения функций. Примеры вычислительных накладных расходов можно найти в функциональном программировании [ необходима ссылка ] , передаче данных и структурах данных.
Разработка программного обеспечения
Выбор реализации
Программист / инженер-программист может выбирать из нескольких алгоритмов , кодировок , типов данных или структур данных , каждый из которых имеет известные характеристики. При выборе среди них также следует учитывать их соответствующие накладные расходы.
Компромиссы
В разработке программного обеспечения накладные расходы могут повлиять на решение, включать ли функции в новые продукты или исправлять ошибки. Функция с высокими накладными расходами может не быть включена - или для этого требуется большой финансовый стимул. Часто, даже если поставщики программного обеспечения хорошо осведомлены об ошибках в своих продуктах, их исправление не стоит вознаграждения из-за накладных расходов.
Например, неявная структура данных или сжатая структура данных могут обеспечить небольшие накладные расходы на пространство, но за счет низкой производительности (компромисс между пространством и временем).
Сложность выполнения программного обеспечения
Алгоритмическая сложность , как правило , задаются с помощью Big O обозначения . Здесь не комментируется, сколько времени что-то нужно для запуска или сколько памяти оно использует, но как его увеличение зависит от размера ввода. Накладные расходы намеренно не являются частью этого расчета, поскольку они варьируются от одной машины к другой, в то время как основное время работы алгоритма - нет.
Это должно контрастировать с алгоритмической эффективностью , которая учитывает все виды ресурсов - сочетание (хотя и не тривиальное) сложности и накладных расходов.
Примеры
Компьютерное программирование (время выполнения и вычислительные затраты)
Вызов функции приводит к небольшим накладным расходам во время выполнения. Иногда компилятор может минимизировать эти накладные расходы, встраивая некоторые из этих вызовов функций .
Кеши процессора
В кэше ЦП «размер кэша» (или емкость ) относится к тому, сколько данных хранится в кэше . Например, «кэш 4 КБ» - это кэш, в котором хранится 4 КБ данных. «4 КБ» в этом примере исключает служебные биты, такие как информация о кадре, адресе и теге. [1]
Связь (накладные расходы на передачу данных)
Для надежной отправки полезной нагрузки по сети связи требуется не только сама отправка полезной нагрузки. Он также включает отправку различных управляющих и сигнальных данных ( TCP ), необходимых для достижения пункта назначения. Это создает так называемые накладные расходы протокола, поскольку дополнительные данные не влияют на внутреннее значение сообщения. [2] [3]
В телефонии набор номера и время установления соединения являются накладными расходами. В двухсторонней (но полудуплексной ) радиосвязи использование "over" и другой сигнализации, необходимой для предотвращения коллизий, является накладными расходами.
Накладные расходы протокола могут быть выражены как процент байтов, не относящихся к приложению ( синхронизация протокола и кадра ), деленный на общее количество байтов в сообщении.
Кодировки и структуры данных (накладные расходы на размер)
Кодирование информации и данных вводит накладные расходы тоже. Дата и время «2011-07-12 7:18:47» может быть выражено в Unix времени с 32-битовым подписанным целым числом 1310447927
, потребляя всего 4 байта . Представленный в ISO 8601 , отформатированный UTF-8 закодированной строки 2011-07-12 07:18:47
дата будет потреблять 19 байт, размер накладных расходов на 375% по сравнению с бинарным представлением целого числа. В формате XML эта дата может быть записана следующим образом с дополнительными затратами в 218 символов, добавляя семантический контекст, что это ИЗМЕНЕНИЕ с индексом 1.
xml version = "1.0" encoding = "UTF-8"?> qualifier = "CHANGEDATE" index = "1" > 2011 07 12 07 18 47
349 байтов, полученных из XML-кода в кодировке UTF-8, коррелируют с накладными расходами на 8625% по сравнению с исходным целочисленным представлением.
Смотрите также
Рекомендации
- ^ Сорин, Дэниел Дж. (2009). «Кеши и иерархии памяти» (PDF) . Проверено 13 марта 2019 года . Презентация для курса компьютерной архитектуры.
- ^ Общие проблемы производительности в сетевых приложениях, часть 1: Интерактивные приложения , Технические статьи Windows XP, Microsoft
- ^ Накладные расходы протокола в сетях IP / ATM , суперкомпьютерный центр Миннесоты