Een rekengebonden programma is een programma waarvan de uitvoeringstijd voornamelijk wordt bepaald door de hoeveelheid berekeningen die het uitvoert, en niet door de hoeveelheid I/O-bewerkingen (invoer/uitvoer) die het moet uitvoeren. Met andere woorden, het besteedt het grootste deel van zijn tijd aan het verwerken van cijfers, het uitvoeren van berekeningen of andere CPU-intensieve taken, en relatief weinig tijd aan het wachten tot gegevens worden gelezen van of geschreven naar schijf, netwerk of andere externe bronnen.
Hier is een overzicht:
* Berekeningsintensief: De kern van het programma omvat complexe wiskundige bewerkingen, simulaties, gegevensverwerking of andere computationeel veeleisende algoritmen. Denk aan zaken als:
* Wetenschappelijke simulaties (weersvoorspellingen, moleculaire dynamica)
* Machine learning-modeltraining
* Cryptografische bewerkingen
* Beeld-/videoverwerking (vooral hoge resolutie)
* Data-analyse met grote datasets
* I/O-beperkt (contrast): Een I/O-gebonden programma daarentegen besteedt het grootste deel van zijn tijd aan het wachten tot de I/O-bewerkingen zijn voltooid. Voorbeelden zijn onder meer:
* Webservers (wachten op verzoeken)
* Databasetoepassingen (wachten op lezen/schrijven van schijf)
* Programma's die sterk afhankelijk zijn van netwerkcommunicatie
Belangrijkste kenmerken van computergebonden programma's:
* Hoog CPU-gebruik: Tijdens de uitvoering wordt de CPU bijna 100% gebruikt.
* Langzame uitvoering: Zelfs met krachtige hardware zal het programma een aanzienlijke hoeveelheid tijd in beslag nemen vanwege de inherente complexiteit van de berekeningen.
* Verbeterd met snellere processors: De uitvoeringstijd kan aanzienlijk worden verkort door een CPU te gebruiken met een hogere kloksnelheid, meer cores of betere vectorisatiemogelijkheden. Het toevoegen van meer RAM kan ook helpen als de werkset van het programma het beschikbare geheugen overschrijdt.
* Minder beïnvloed door snellere I/O: Het upgraden naar snellere opslag- of netwerkhardware zal een relatief kleine impact hebben op de algehele uitvoeringstijd.
Het identificeren of een programma computer- of I/O-gebonden is, is belangrijk voor prestatie-optimalisatie. Voor computergebonden programma's moet de nadruk liggen op het optimaliseren van algoritmen, het gebruik van parallelle verwerkingstechnieken en mogelijk het gebruik van gespecialiseerde hardware zoals GPU's. Voor I/O-gebonden programma's zou de focus verschuiven naar het optimaliseren van databasequery's, het gebruik van snellere opslag en het verbeteren van de netwerkcommunicatie. |