SA9
...
...
Kartei Details
Karten | 15 |
---|---|
Sprache | Deutsch |
Kategorie | Informatik |
Stufe | Andere |
Erstellt / Aktualisiert | 16.07.2016 / 16.07.2016 |
Weblink |
https://card2brain.ch/box/sa9
|
Einbinden |
<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
- aber: Unit Test wird auf CPU ausgeführt & in Java compeliert
- 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