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

редактировать

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

СОДЕРЖАНИЕ
  • 1 Разработка программного обеспечения
    • 1.1 Выбор реализации
    • 1.2 Компромиссы
    • 1.3 Сложность выполнения программного обеспечения
  • 2 Примеры
    • 2.1 Компьютерное программирование (время выполнения и вычислительные затраты)
    • 2.2 Кеши процессора
    • 2.3 Связь (накладные расходы на передачу данных)
    • 2,4 Кодировки и структуры данных (накладные расходы на размер)
  • 3 Смотрите также
  • 4 Рекомендации
Разработка программного обеспечения

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

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

Компромиссы

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

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

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

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

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

Примеры

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

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

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

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

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

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

В телефонии набор номера и время установления соединения являются накладными расходами. В двухсторонней (но полудуплексной ) радиосвязи использование "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.

lt;?xml version="1.0" encoding="UTF-8"?gt; lt;DATETIME qualifier="CHANGEDATE" index="1"gt; lt;YEARgt;2011lt;/YEARgt; lt;MONTHgt;07lt;/MONTHgt; lt;DAYgt;12lt;/DAYgt; lt;HOURgt;07lt;/HOURgt; lt;MINUTEgt;18lt;/MINUTEgt; lt;SECONDgt;47lt;/SECONDgt; lt;/DATETIMEgt;

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

Смотрите также
Рекомендации
Последняя правка сделана 2023-03-31 06:11:37
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте