Ugrás a tartalomhoz

Többletköltség (számítástechnika)

A Wikipédiából, a szabad enciklopédiából

A számítógépes rendszerekben a többletköltség vagy többletterhelés olyan közös funkciókat jelent, amelyek minden felhasználó vagy folyamat hasznára válnak, de nem tulajdoníthatók közvetlenül egyetlen konkrét feladatnak sem. Ez tehát hasonló a vállalatok többletköltségeihez. A számítógépes rendszer többletterhelése lassabb feldolgozásként, kevesebb memóriaként, kisebb tárolókapacitásként, kisebb hálózati sávszélességként vagy nagyobb késleltetésként jelenik meg, mint az elvárható a rendszerspecifikációk olvasásakor.[1] Ez a mérnöki többletköltség egy speciális esete. A többletköltség döntő tényező lehet a szoftvertervezésben, tekintettel a szerkezetre, a hibajavításra és a jellemző szolgáltatások, funkciók felvételére. Példák a számítási többletterhelésre az objektumorientált programozásban (OOP), a funkcionális programozásban, adatátvitel esetében, illetve adatszerkezetek és fájlrendszerek adattároló eszközökön való megvalósításaiban sokfélék lehetnek.

Szoftvertervezés

[szerkesztés]

A megvalósítás megválasztása

[szerkesztés]

A programozó/szoftvermérnök többféle algoritmus, kódolás, adattípus vagy adatstruktúra közül választhat, amelyek mindegyike ismert jellemzőkkel rendelkezik. A választásnál figyelembe kell venni a hozzájuk tartozó többletköltségeket is.

Kompromisszumok

[szerkesztés]

A szoftverfejlesztésben a többletköltségek befolyásolhatják azt a döntést, hogy beépítsünk-e funkciókat az új termékekbe, vagy hogy megéri-e kijavítani a hibákat. Előfordulhat, hogy a magas többletköltségű szolgáltatás nem kerül bele – vagy ehhez nagy anyagi ösztönzésre van szüksége. Noha a szoftverszolgáltatók jól ismerik a termékeik hibáit, gyakran a kijavításuk nem térül meg.

Például egy implicit adatstruktúra vagy tömör adatstruktúra alacsony helyigényt biztosíthat lassú teljesítmény árán (tár/idő kompromisszum).

A szoftver futásidejű komplexitása

[szerkesztés]

Az algoritmikus bonyolultságot általában a nagy O jelöléssel határozzák meg. Ez nem befolyásolja, hogy mennyi ideig tart valaminek a futtatása, vagy mennyi memóriát használ, de a növekedés mértéke a bemenet méretétől függ. Az általános költség szándékosan nem része ennek a számításnak, mivel gépenként változik, míg egy algoritmus elvi futási ideje nem.

Ezzel szembe kell állítani az algoritmikus hatékonyságot, amely mindenféle erőforrást figyelembe vesz – a komplexitás és a többletköltségek (nem triviális) kombinációja.

Példák

[szerkesztés]

Számítógépes programozás (futásidejű és számítási többletköltség)

[szerkesztés]

Egy függvény meghívása kis futási többletköltséget jelent.[2] Néha a fordító minimálisra csökkentheti ezt a többletköltséget azáltal, hogy behelyettesít néhány függvényhívást.[3]

CPU gyorsítótárak

[szerkesztés]

A CPU gyorsítótárában a "gyorsítótár mérete" (vagy kapacitása) arra utal, hogy a gyorsítótár mennyi adatot tárol. Például egy „4 KB-os cache" egy gyorsítótár, amely 4 KB adatot tárol. A „4 KB" ebben a példában kizárja az olyan overhead biteket, mint például a keret-, cím- és címkeinformáció.[4]

Kommunikáció (adatátviteli költség)

[szerkesztés]

Egy kommunikációs hálózaton ahhoz, hogy megbízhatóan elküldjünk valamilyen adatot, nem elég csupán magát a hasznos terhet elküldeni. A célállomás eléréséhez szükséges különféle vezérlő- és jelzésadatok (TCP) küldése is. Ez úgynevezett protokoll többletköltséget hoz létre, mivel a további adatok nem járulnak hozzá az üzenet belső jelentéséhez.

A telefóniában a számtárcsázás és a hívásfelépülés ideje többletköltséget jelent. A félduplex rádiókban a "vége" használata és az ütközések elkerüléséhez szükséges egyéb jelzések használata többletköltséget jelent.

A protokoll többletterhelése százalékban kifejezhető, a nem alkalmazási bájtok (protokoll- és keretszinkronizálás) osztva az üzenetben lévő bájtok teljes számával.

Kódolások és adatstruktúrák (többletméret)

[szerkesztés]

Az információk és adatok kódolása is többletköltséget jelent. A "2011-07-12 07:18:47" dátum és idő Unix-időben fejezhető ki a 1310447927 32 bites előjeles egész számmal, amely mindössze 4 bájtot vesz igénybe. Az ISO 8601 szabvány szerint formázott UTF-8 kódolású karakterláncként ábrázolva 2011-07-12 07:18:47 a dátum 19 bájtot foglalna el, ami 375%-os többletköltséget jelent a bináris egész reprezentációhoz képest. XML-ben ez a dátum a következőképpen írható 218 karakterből álló többletköltséggel, ha hozzáadjuk a szemantikai kontextust, amely egy CHANGEDATE minősítő 1-es indexszel.

<?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>

Az UTF-8 kódolású XML-ből származó 349 bájt 8625%-os többletméretnek felel meg az eredeti egész típusú megjelenítéséhez képest.

Fájlrendszerek

[szerkesztés]

Magukon a fájlokon kívül a számítógépes fájlrendszerek a hely egy részét a könyvtárnevek és -listák, fájlnevek, fájlok szektorhelyeinek, attribútumok, például az utolsó módosítás és létrehozás dátuma és időpontja, a fájlok töredezettségének, a tár írott és szabad részei, valamint egyes fájlrendszereken a napló tárolására használják.

Sok kis fájl több többletköltséget termel, mint kevés nagy fájl.

Jegyzetek

[szerkesztés]
  1. Denning, Peter. Overhead, Encyclopedia of Computer Science. John Wiley and Sons, 1341–1343. o. (2003. január 1.). ISBN 978-0-470-86412-8 
  2. Inline functions (C++). Microsoft Learn. Microsoft, 2024. január 22. (Hozzáférés: 2024. március 22.)
  3. Mahaffey: Inlining Decisions in Visual Studio. C++ Team Blog. Microsoft, 2019. július 24.
  4. Sorin: Caches and Memory Hierarchies, 2009. (Hozzáférés: 2019. március 13.) Presentation for course in Computer Architecture.

Fordítás

[szerkesztés]

Ez a szócikk részben vagy egészben az Overhead (computing) című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.

Kapcsolódó szócikk

[szerkesztés]