Als Entwickler zahlreicher namhafter Mac- und iOS-Programme sind wir bei Synium Software regelmäßig mit dem Problem konfrontiert, immer noch mehr Leistung aus der Software holen zu müssen, damit auch Nutzer älterer Macs Freude daran haben. Die folgende Aufstellung gewährt einen kleinen Einblick in verschiedene Wege der Optimierung.
1) Hilfe durch Apples Entwicklertools
Teil der von Apple bereitgestellten Entwicklertools ist „Instruments“, das dem Entwickler dabei hilft, zu erkennen, wo Verbesserungsbedarf bei Programmen besteht. Zwei Arten der Analyse sind dabei besonders gängig: Einerseits die Analyse, in welchen Programmbestandteilen wie viel Zeit verbracht wird, andererseits die Untersuchung des Speicherbedarfs.
2) Einzelschritte optimieren
Abhängig von den Ergebnissen kommen verschiedene Optimierungen in Betracht: ergab die Analyse, dass einige Schritte zu oft ausgeführt wurden, gibt es verschiedene Strategien, dies zu verhindern. Am Beispiel der Ahnenforschung MacStammbaum: Wird eine Liste aller Personen angezeigt, so müssen nicht die Daten aller Personen vorliegen, sondern es reicht, die Daten der Personen zu laden, die sich gerade im sichtbaren Bereich der Tabelle befinden. Generell kann das Weglassen einer einzigen arithmetischen Operation eine enorme Verbesserung um Faktor 1000 mit sich bringen.
3) Mehr Prozessorkerne beschäftigen
Auf einem Mac mit vier Kernen sind im Idealfall Geschwindigkeitssteigerungen von Faktor vier möglich. Leider lassen sich nicht alle Arbeiten in voneinander unabhängige Teile aufspalten. Dies ist jedoch die Voraussetzung für das Verteilen der Aufgaben auf mehrere Kerne. In der Bildschirmaufnahme-Anwendung Screenium beispielsweise werden während der Aufnahme die zu komprimierenden Bildteile gleichmäßig auf die Kerne verteilt, um eine möglichst flüssige Aufnahme zu erreichen. Eine weitere Optimierungsmöglichkeit besteht darin, Aufgaben nicht vom Prozessor selbst, sondern von der Vektoreinheit des Prozessors oder der Grafikkarte erledigen zu lassen. Will man beispielsweise ein Bild weichzeichnen, so kann dies die Grafikkarte erheblich schneller erledigen.
4) Zwischenspeicher nutzen
Sollten diese Optimierungen nicht das gewünschte Ergebnis bringen, so kann man in einigen Fällen Zwischenergebnisse und häufig gebrauchte Ressourcen im Speicher vorhalten. Ein Beispiel aus Logoist wäre das Verändern eines einzelnen Layers: alle anderen Layer sind hiervon nicht betroffen, sind somit nicht verändert und müssen nicht neu berechnet werden. Es wird das „alte“ Bild des Layers weiterbenutzt, das sich immer noch im Speicher befindet. Dies ist allerdings Abwägungssache, da Speicher nicht unbegrenzt zur Verfügung steht. Das Betriebssystem beginnt dann mitunter Arbeitsspeicher auf die Festplatte auszulagern. Dies kann das gesamte System verlangsamen. Noch schlimmer wird es, wenn ein Programm „vergisst“, angeforderten Speicher wieder freizugeben („Leaks“) – die App sowie der Rest des Systems reagiert dann zunehmend träge.
5) Echte oder gefühlte Performance?
Ob ein Nutzer zufrieden mit der Geschwindigkeit eines Programmes ist, hängt nicht nur von dessen tatsächlichen Geschwindigkeit ab, sondern auch von der „gefühlten Performance“. Kurze Wartezeiten lassen sich durch eine Animation maskieren, längere durch die Anzeige eines Fortschrittsbalkens. So kann der Nutzer erkennen, dass die App nicht eingefroren ist. Apple nutzt kleinere Animationen an vielen Stellen: das Quicklook-Fenster beispielsweise nutzt die Zeit, in der das Fenster geöffnet wird zum Erstellen der Vorschau.
Synium mit Sitz bei Mainz bietet ein sehr vielfältiges Software-Portfolio für OS X und iOS – von der Ahnenverwaltung MacStammbaum über das Haushaltsbuch iFinance, das Screencasting-Tool Screenium über die Mac-Aufräum-App CleanApp, die leistungsfähige Grafik-App Logoist bis hin zum Wohnungseinrichter MyFourWalls sowie im deutschsprachigen Bereich den Newsdienst MacTechNews.de.