Narzut (obliczenia) — Overhead (computing)

W informatyce , narzut jest dowolna kombinacja nadmiaru lub pośrednim czasie obliczeń, pamięci, przepustowości lub innych zasobów, które są niezbędne do wykonania określonego zadania . Jest to szczególny przypadek narzutu inżynierskiego . Narzut może być decydującym czynnikiem w projektowaniu oprogramowania, w odniesieniu do struktury, korekcji błędów i włączenia funkcji. Przykłady narzutów obliczeniowych można znaleźć w programowaniu funkcjonalnym , transferze danych i strukturach danych.

Projektowanie Oprogramowania

Wybór realizacji

Programista/inżynier oprogramowania może mieć do wyboru kilka algorytmów , kodowań , typów danych lub struktur danych , z których każdy ma znaną charakterystykę. Wybierając spośród nich, należy również wziąć pod uwagę ich koszty ogólne.

Kompromisy

W inżynierii oprogramowania narzut może wpłynąć na decyzję, czy uwzględnić funkcje w nowych produktach, a nawet czy naprawić błędy. Funkcja, która wiąże się z wysokimi kosztami ogólnymi, może nie zostać uwzględniona – lub wymaga do tego dużej zachęty finansowej. Często, mimo że dostawcy oprogramowania doskonale zdają sobie sprawę z błędów w swoich produktach, zapłata za ich naprawienie nie jest warta nagrody ze względu na koszty ogólne.

Na przykład niejawna struktura danych lub zwięzła struktura danych może zapewnić niski narzut przestrzeni, ale kosztem niskiej wydajności (kompensacja przestrzeni/czasu).

Złożoność oprogramowania w czasie wykonywania

Złożoność algorytmiczna jest zwykle określana za pomocą notacji Big O . To nie komentuje, jak długo coś działa ani ile pamięci używa, ale jak jego wzrost zależy od rozmiaru danych wejściowych. Narzut celowo nie jest częścią tych obliczeń, ponieważ różni się w zależności od maszyny, podczas gdy podstawowy czas działania algorytmu nie.

Należy to skontrastować z efektywnością algorytmiczną , która uwzględnia wszystkie rodzaje zasobów – kombinację (choć nie trywialną) złożoności i narzutu.

Przykłady

Programowanie komputerowe (narzuty wykonawcze i obliczeniowe)

Wywołanie funkcji wprowadza niewielki narzut w czasie wykonywania. Czasami kompilator może zminimalizować to obciążenie przez wbudowanie niektórych z tych wywołań funkcji .

Pamięć podręczna procesora

W pamięci podręcznej procesora „rozmiar pamięci podręcznej” (lub pojemność ) odnosi się do ilości danych przechowywanych w pamięci podręcznej . Na przykład „pamięć podręczna 4 KB” to pamięć podręczna, która przechowuje 4 KB danych. „4 KB” w tym przykładzie wyklucza dodatkowe bity, takie jak informacje o ramkach, adresach i znacznikach.

Komunikacja (narzut przesyłu danych)

Niezawodne wysyłanie ładunku danych przez sieć komunikacyjną wymaga przesyłania czegoś więcej niż tylko samego ładunku. Obejmuje to również wysyłanie różnych danych kontrolnych i sygnalizacyjnych ( TCP ) wymaganych do dotarcia do celu. Stwarza to tak zwany narzut protokołu, ponieważ dodatkowe dane nie przyczyniają się do wewnętrznego znaczenia wiadomości.

W telefonii wybieranie numeru i czas nawiązywania połączenia to koszty ogólne. W radiotelefonach dwukierunkowych (ale półdupleksowych ) użycie „nad” i innych sygnalizacji potrzebnych do uniknięcia kolizji jest obciążeniem.

Narzut protokołu może być wyrażony jako procent bajtów nieaplikacyjnych ( synchronizacja protokołów i ramek ) podzielonych przez całkowitą liczbę bajtów w komunikacie.

Kodowania i struktury danych (narzut dotyczący rozmiaru)

Kodowania informacji i danych wprowadza w napowietrznych zbyt. Data i czas „2011-07-12 07:18:47” można wyrazić jako czas Unix z 32-bitowej podpisanej całkowitą 1310447927 , pochłania tylko 4 bajty . Reprezentowana jako ciąg zakodowany w formacie ISO 8601 w formacie UTF-8, data zużyłaby 19 bajtów, co stanowi narzut o wielkości 375% w stosunku do binarnej reprezentacji liczb całkowitych. Jako XML ta data może być zapisana w następujący sposób z narzutem 218 znaków, dodając kontekst semantyczny, że jest to ZMIANA z indeksem 1. 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 bajtów, wynikające z kodu XML zakodowanego w formacie UTF-8, odpowiada narzutowi rozmiaru 8625% w stosunku do oryginalnej reprezentacji liczb całkowitych.

Zobacz też

Bibliografia