SA9

...

...


Set of flashcards Details

Flashcards 15
Language Deutsch
Category Computer Science
Level Other
Created / Updated 16.07.2016 / 16.07.2016
Weblink
https://card2brain.ch/box/sa9
Embed
<iframe src="https://card2brain.ch/box/sa9/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

Welche Aufgaben müssen noch erledigt werden wenn die eigentliche Implementierung abgeschlossen ist?

  • Performance Optimierung
  • Robustheit
  • Schutz (Lizenzmechanismen, Verschleierungen, Sicherheit)
  • Dokumentation
  • Installer

Nennen Sie vier Performance Metriken.

  • Durchsatz
  • Antwortzeit
  • Skalierbarkeit
  • Speicherverbrauch

Nennen Sie drei Problematiken, die auftreten können und gegen Optimierung sprechen.

  • Funktionierenden Code zu optimieren führt womöglich dazu subtile Fehler einzuführen
  • Code wird schwerer verständlich und schwerer wartbar
  • Optimierung kostet Zeit und bringt oft nur geringen Performance Gewinn
  • Optimierung von Code für eine spezifische Plattform kann diesen auf einer anderen Plattform verschlimmern

Warum ist es wichtig, den Programmcode auf Performance zu optimieren?

  • Limitierte Ressourcen (CPU Zyklen, Speicher, Netzwerkbandbreite)
  • In Java idR. Geschwindigkeit das Hauptproblem
  • In Embedded-Systems ist der Speicher das Hauptproblem
  • In verteilten Systemen kann Netzwerk-Bandbreite ein großes Problem sein

Welche allgemeinen Vorschriften sind bei Optimierung zu beachten?

  • Zuerst das System bauen, anschließend Optimieren
  • Engpässe meist dort, wo man sie nicht erwartet
  • Nur das verbessern, was einen Gewinn bringt
  • Verbesserung der Leistung führt idR zu einer Abnahme der Klarheit des Designs
  • Große Performance-Verbesserungen sind eine Frage der zugrunde liegenden Architektur

Welche Entwurfsmuster tragen zur Optimierung der Leistung bei?

  • Flyweight:
  • Object Pool
  • Prototype
  • Proxy

Nennen Sie 3 Entwurfsmuster zur Performance Verbesserung und kategorisieren Sie diese hinsichtlich der Leistungsoptimierung

  • Flyweight: reduziert den Speicherverbrauch
  • Object Pool: reduziert den Speicherverbrauch
  • Prototype: beschleunigt die Objekterzeugung
  • Proxy: beschleunigt die Kommunikationsgeschwindigkeit

Was versteht man unter einem Flyweight Pattern und nennen Sie ein Beispiel dazu.

  • wird verwendet, wenn eine große Anzahl von Objekten benötigt wird,
  • die sich bestimmte variable Informationen teilen,
  • und eine herkömmliche Implementierung unverhältnismäßig viele Ressourcen erfordert
    —> Speicheroptimierung
  • Bsp.: Moderne Web Browser
    • um zu verhindern, dass zweimal dasselbe Bild geladen wird 
    • Es gibt ein Flyweight-Objekt für jedes bereits geladene Bild
    • Das eigentliche Bild wird nur referenziert

Nennen Sie drei Arten des Performance Testing

  • Load Testing
  • Stress Testing
  • Volume Testing
  • Endurance Testing
  • Spike Testing

Wie kann Optimierung durch Compilerunterstützung erreicht werden?

  • Dem Compiler mehr Informationen geben
    - Final Variablen nutzen
    - Static benutzen

Was versteht man unter einem Unit Testing bezogen auf Performance.

  • JUnit misst die Zeit für jeden Test unter Verwendung des Decoder Patterns
    • aber: Unit Test wird auf CPU ausgeführt & in Java compeliert
      —> diese Zeit fließt mit ein; deshalb nicht 100& korrekt
    • sonst ziemlich gut für Performance Testing: einmal implementiert; wiederholbar
  • Unit-Tests erfolgen während der Entwicklung
    • konzentrieren sich auf die korrekte Funktionalität der kleinsten prüfbaren Teile
    • nicht auf nicht-funktionale Aspekte & nicht auf die Belastbarkeit konzentriert

Welche Nachteile haben Performance Messungen mit JUnit Tests?

  • Messgröße ist Zeit und nicht CPU-Zyklen
  • Garbagecollection und andere Aufgaben haben Einfluss
  • Speicher wird nicht berücksichtigt

Was ist das Ziel von Performance Testing?

  • Ziel ist es, den Engpass des Systems zu finden und zu beheben

Wofür wird Stress Testing verwendet?

  • Jedes System hat eine Kapazitätsbeschränkung
  • Wenn die Last über die Grenze geht, wird es sehr langsam reagieren & ggf. Fehler erzeugen
    —> Stress-Test soll die Kapazitätsgrenze des Systems finden
    —> sodass nachvollzogen werden kann, zu welchem Zeitpunkt das System beeinträchtigt ist

Wie wird die Performance durch Prototypen verbessert?

  • Die neue Erstellung eines Objekts wird vermieden
  • Dafür ein Klon eines vorhandenen Objektes erzeugt
    —> Geschwindigkeitsoptimierung