Overhead
In informatica, la parola inglese overhead (letteralmente in alto, che sta di sopra) serve per definire le risorse accessorie, ma necessarie, per ottenere un determinato scopo.In pratica ogni operazione eseguita su un sistema informatico servendosi delle infrastrutture che questo offre, ha oltre al suo naturale costo in risorse un costo aggiuntivo, in termini di memoria, di tempo di esecuzione o di banda occupata. Questo costo aggiuntivo č l'overhead.
Un esempio classico č il tempo di esecuzione delle funzioni (subroutine) di un programma: al tempo effettivamente impiegato da queste funzioni (ad esempio il calcolo di una radice quadrata) verrĆ sempre sommato un tempo accessorio necessario a chiamare le funzioni stesse. Questo tempo aggiuntivo puĆ² essere pił o meno grande a seconda del linguaggio e del numero di parametri della funzione, ma non č eliminabile.
Un altro esempio di overhead č la presenza di strati sovrapposti di astrazione, ad esempio una classe C++ che incapsula un'API in linguaggio C. Maggiore č il numero di livelli di astrazione, maggiore sarĆ l'overhead necessario per eseguire le singole operazioni. Viceversa, scegliendo di non servirsi delle infrastrutture software presenti nel sistema (cioč operando a basso livello, tipicamente programmando in assembler) l'overhead puĆ² venire ridotto o eliminato, a prezzo di una maggior difficoltĆ nella scrittura del programma.
Nelle reti di computer la parola overhead ha un significato diverso, e si riferisce all'informazione (banda di trasmissione) aggiuntiva necessaria a trasmettere l'informazione stessa, dovuta al particolare protocollo di rete usato. Ad esempio, quando viene inviato un pacchetto su una rete TCP/IP, che contiene ad esempio parte di un'immagine, c'č sempre un preambolo (header in inglese) contenente l'indirizzo di destinazione e altre informazioni.