Leistungsbewertung und Profiling

Welche Verbesserung hat bei einem Programm zur Verarbeitung großer Datenmengen am ehesten das Potenzial für den größten Speedup?

  1. AVariablennamen kürzen
  2. BEinen Algorithmus mit Komplexität n² durch einen mit n log n ersetzen
  3. CKommentare löschen
Antwort und Erläuterung anzeigen

Antwort: B. Einen Algorithmus mit Komplexität n² durch einen mit n log n ersetzen

Bei einer Datenzahl n von 1 Million ist n² gleich 1 Billion und n log n etwa 20 Millionen, ein Unterschied um das 50.000-Fache. Verglichen mit dem Effekt von einigen Faktoren durch feine Befehlsoptimierung oder Hardwareverbesserung kann die Verbesserung des Algorithmus Größenordnungen bringen. Bei der Leistungsverbesserung wird zuerst geprüft, ob ein Algorithmus mit hoher Komplexität verwendet wird, und danach werden Verbesserungen bei Cache-Nutzung und Parallelisierung aufgesetzt.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Leistungsbewertung und Profiling

  1. Was ist der Zweck, in der Softwareentwicklung bei jeder Änderung automatisch Benchmarks auszuführen und die Ergebnisse aufzuzeichnen?
  2. Benchmark-Messungen auf einem Notebook streuten bei demselben Programm jedes Mal stark. Welche Kombination aus möglicher Ursache auf CPU-Seite und Gegenmaßnahme ist richtig?
  3. Warum werden bei Leistungsmessungen in Multicore- oder NUMA-Systemen Threads mitunter an bestimmte Kerne gebunden (Affinität gesetzt)?
  4. Was ist bei der Leistungsanalyse von GPU-Programmen zuerst zu prüfen?
  5. Welcher Gesichtspunkt gehört nicht zu dem, was bei der Auswahl von Servern im Rechenzentrum zusätzlich zur Spitzenleistung zu beachten ist?