stringtranslate.com

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

Накладные расходы в компьютерных системах состоят из общих функций, которые приносят пользу всем пользователям или процессам, но не относятся напрямую к какой-либо конкретной задаче. Таким образом, они похожи на накладные расходы в организациях. Накладные расходы компьютерной системы проявляются в более медленной обработке, меньшем объеме памяти, меньшей пропускной способности сети или большей задержке, чем можно было бы ожидать при чтении спецификаций системы. [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% по сравнению с исходным целочисленным представлением.

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

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

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

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

Ссылки

  1. ^ Деннинг, Питер. Энциклопедия компьютерных наук. ISBN 978-0-470-86412-8.
  2. ^ "Встроенные функции (C++)". Microsoft Learn . Microsoft . Получено 22 марта 2024 г. .
  3. ^ Махаффи, Терри (24 июля 2019 г.). «Встраивание решений в Visual Studio». Блог команды C++ . Microsoft.
  4. ^ Сорин, Дэниел Дж. (2009). "Кэши и иерархии памяти" (PDF) . Получено 13 марта 2019 г.Презентация для курса «Архитектура компьютеров».
  5. ^ Распространенные проблемы производительности в сетевых приложениях. Часть 1: Интерактивные приложения, Технические статьи Windows XP, Microsoft
  6. ^ Накладные расходы протокола в сетях IP/ATM, Суперкомпьютерный центр Миннесоты