Ein Programm für das Rechenprogramm ist ein Programm, dessen Ausführungszeit in erster Linie durch die Menge der Berechnung bestimmt wird, die es durchführt, und nicht durch die Menge an E/A-Vorgängen (Eingabe/Ausgabe), die es ausführen muss. Mit anderen Worten, es verbringt die meiste Zeit damit, Zahlen zu knirschen, Berechnungen oder andere CPU-intensive Aufgaben auszuführen und relativ wenig Zeit zu warten, auf die Daten gelesen oder auf Disk, Netzwerk oder andere externe Ressourcen geschrieben werden.
Hier ist eine Aufschlüsselung:
* Berechtigungsschwer: Der Kern des Programms beinhaltet komplexe mathematische Operationen, Simulationen, Datenverarbeitung oder andere rechnerisch anspruchsvolle Algorithmen. Denken Sie an Dinge wie:
* Wissenschaftliche Simulationen (Wettervorhersage, molekulare Dynamik)
* Modell Training für maschinelles Lernen
* Kryptografische Operationen
* Bild-/Videoverarbeitung (insbesondere hochauflösende)
* Datenanalyse mit großen Datensätzen
* I/O-Limited (Kontrast): Im Gegensatz dazu verbringt ein I/O-gebundenes Programm die meiste Zeit damit, darauf zu warten, dass die E/A-Operationen abgeschlossen sind. Beispiele sind:
* Webserver (Warten auf Anfragen)
* Datenbankanwendungen (Warten auf die Festplatte liest/schriftlich)
* Programme, die stark auf die Netzwerkkommunikation beruhen
Schlüsselmerkmale von rechnen gebundenen Programmen:
* hohe CPU -Auslastung: Während der Ausführung wird die CPU nahezu 100% genutzt.
* langsame Ausführung: Selbst mit leistungsstarke Hardware wird das Programm aufgrund der inhärenten Komplexität der Berechnungen viel Zeit in Anspruch nehmen.
* verbessert sich mit schnelleren Prozessoren: Die Ausführungszeit kann durch die Verwendung einer CPU mit höherer Taktgeschwindigkeit, mehr Kernen oder besseren Vektorisierungsfunktionen erheblich reduziert werden. Das Hinzufügen von mehr RAM kann auch helfen, wenn der Arbeitssatz des Programms den verfügbaren Speicher übersteigt.
* weniger betroffen von schnellerer E/O: Das Upgrade auf schnellere Speicher- oder Netzwerkhardware hat einen relativ geringen Einfluss auf die Gesamtausführungszeit.
Das Erkennen, ob ein Programm berechnet oder I/O-Bound ist, ist für die Leistungsoptimierung wichtig. Bei Berechnungsprogrammen sollte sich der Schwerpunkt auf der Optimierung von Algorithmen, der Verwendung paralleler Verarbeitungstechniken und der potenziellen Verwendung von spezialisierten Hardware wie GPUs befinden. Bei I/O-gebundenen Programmen würde sich der Fokus auf die Optimierung von Datenbankabfragen, die Verwendung eines schnelleren Speichers und die Verbesserung der Netzwerkkommunikation verlagern.