Накладные расходы (вычисления)
Эта статья нуждается в дополнительных цитатах для проверки . ( февраль 2018 г. ) |
В информатике конкретной накладные расходы — это любая комбинация избыточного или косвенного времени вычислений, памяти, пропускной способности или других ресурсов, которые необходимы для выполнения задачи . [1] Это частный случай инженерных накладных расходов . Накладные расходы могут быть решающим фактором при разработке программного обеспечения в отношении структуры, исправления ошибок и включения функций. Примеры вычислительных затрат можно найти в объектно-ориентированном программировании (ООП), функциональном программировании , [ нужна ссылка ] передача данных и структуры данных.
Разработка программного обеспечения
[ редактировать ]Выбор реализации
[ редактировать ]Программист/инженер-программист может выбирать из нескольких алгоритмов , кодировок , типов данных или структур данных , каждый из которых имеет известные характеристики. При выборе среди них следует также учитывать соответствующие накладные расходы.
Компромиссы
[ редактировать ]В разработке программного обеспечения накладные расходы могут повлиять на решение о том, включать ли функции в новые продукты или исправлять ошибки. Функция, требующая больших затрат, может быть не включена – или для этого нужен большой финансовый стимул. Часто, даже несмотря на то, что поставщики программного обеспечения хорошо осведомлены об ошибках в своих продуктах, выгода от их исправления не стоит вознаграждения из-за накладных расходов.
Например, неявная структура данных или краткая структура данных могут обеспечить небольшие накладные расходы на пространство, но за счет низкой производительности (компромисс пространства/времени).
Сложность программного обеспечения во время выполнения
[ редактировать ]Алгоритмическая сложность обычно определяется с использованием нотации Big O. Это не дает комментариев о том, сколько времени требуется для выполнения чего-либо или сколько памяти оно использует, но показывает, как его увеличение зависит от размера входных данных. Накладные расходы намеренно не включаются в этот расчет, поскольку они варьируются от одной машины к другой, тогда как основное время работы алгоритма не меняется.
Это следует противопоставить алгоритмической эффективности , которая учитывает все виды ресурсов — комбинацию (хотя и не тривиальную) сложности и накладных расходов.
Примеры
[ редактировать ]Компьютерное программирование (время выполнения и вычислительные затраты)
[ редактировать ]Вызов функции приводит к небольшим накладным расходам во время выполнения. [2] Иногда компилятор может минимизировать эти издержки, встроив некоторые из этих вызовов функций . [3]
Кэш процессора
[ редактировать ]В кэше ЦП «размер кэша» (или емкость ) означает, сколько данных хранит кэш . Например, «кеш 4 КБ» — это кеш, содержащий 4 КБ данных. «4 КБ» в этом примере исключают служебные биты , такие как информация о кадре, адресе и теге. [4]
Связь (накладные расходы на передачу данных)
[ редактировать ]Надежная отправка полезных данных по сети связи требует отправки не только самих полезных данных. Это также включает отправку различных данных управления и сигнализации ( TCP ), необходимых для достижения пункта назначения. Это создает так называемые издержки протокола , поскольку дополнительные данные не влияют на внутренний смысл сообщения. [5] [6]
В телефонии набор номера и время установления вызова являются накладными расходами. В двусторонней (но полудуплексной ) радиосвязи использование «over» и других сигналов, необходимых для предотвращения коллизий, является накладными расходами.
Накладные расходы протокола могут быть выражены как процент неприкладных байтов (синхронизация протокола и кадров ), разделенный на общее количество байтов в сообщении.
Кодировки и структуры данных (затраты на размер)
[ редактировать ]Кодирование . информации и данных также приводит к накладным расходам Дата и время «2011-07-12 07:18:47» могут быть выражены как время Unix с помощью 32-битного со знаком . целого числа 1310447927
, занимающий всего 4 байта. Представлено как ISO 8601. в формате UTF-8 в формате строка 2011-07-12 07:18:47
дата будет занимать 19 байт, что на 375% превышает размер двоичного целочисленного представления. В формате XML эту дату можно записать следующим образом с дополнительными 218 символами, добавив при этом семантический контекст, что это CHANGEDATE с индексом 1.
<?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 % по сравнению с исходным целочисленным представлением.
Файловые системы
[ редактировать ]Помимо самих файлов, компьютерные файловые системы занимают часть пространства для хранения имен и списков каталогов, имен файлов, расположения секторов файлов, таких атрибутов, как дата и время последней модификации и создания, того, как файлы фрагментированы , записаны. и свободные части места, и журнал на некоторых файловых системах.
Множество небольших файлов создают больше накладных расходов, чем небольшое количество больших файлов.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Понимание визуализации накладных расходов и задержек в системах NVIDIA Nsight» . Технический блог NVIDIA . 18 сентября 2020 г. Проверено 4 июля 2024 г.
- ^ «Встроенные функции (C++)» . Microsoft Learn . Майкрософт . Проверено 22 марта 2024 г.
- ^ Махаффи, Терри (24 июля 2019 г.). «Встраивание решений в Visual Studio» . Блог команды C++ . Майкрософт.
- ^ Сорин, Дэниел Дж. (2009). «Кэши и иерархии памяти» (PDF) . Проверено 13 марта 2019 г. Презентация к курсу «Архитектура компьютеров».
- ^ Распространенные проблемы с производительностью сетевых приложений. Часть 1: Интерактивные приложения , Технические статьи по Windows XP, Microsoft
- ^ Накладные расходы протокола в сетях IP/ATM , Суперкомпьютерный центр Миннесоты