Többletköltség (számítástechnika)
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]- ↑ Denning, Peter. Overhead, Encyclopedia of Computer Science. John Wiley and Sons, 1341–1343. o. (2003. január 1.). ISBN 978-0-470-86412-8
- ↑ Inline functions (C++). Microsoft Learn. Microsoft, 2024. január 22. (Hozzáférés: 2024. március 22.)
- ↑ Mahaffey: Inlining Decisions in Visual Studio. C++ Team Blog. Microsoft, 2019. július 24.
- ↑ 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.