Tech-Talk: Speed-Up in der neuen NavShip-iOS-Version
11 Sekunden. So lange dauert es, wenn man in die neue NavShip Version (1.11.0) auf einem iPhone 7 öffnet, bis sie vollständig geladen ist. Und zwar das komplette Fahrgebeit in Europa und Nordamerika.
96 Sekunden benötigt das Android-Äquivalent. Wir haben es mit einem Huawei P8 getestet. Ein ganz schöner Unterschied. Warum ist das so?
Dies ist ein Tech-Beitrag über die Effizienz der NavShip-Ladealgorithmen. Wir erklären nicht alle Fachbegriffe gesondert.
Wir nutzen in der neuen iOS-Version einen neuen Algorithmus zum Laden der Fahrgebiete. Vorher lagen die Gewässer einzeln im Gerätespeicher, über 250.000 Kilometer Streckenlänge digitalisiert, reine Daten. Nach dem Laden eines Gewässers wurde jedes mal überprüft, ob es Verbindungen von oder zu diesem Gewässer – von anderen bereits geladenen Gewässern – gibt. Für die Technikaffinen unter euch: In der Informatik nennt man dies Quadratische, bzw. n²-Laufzeit, mit steigendem N (in diesem Fall die Anzahl der Gewässer), steigt die Ladezeit wesentlich schneller, als bei einer linearen Ladezeit. Da viele Gewässer einen Anfang und ein Ende haben, verdoppelt sich diese Ladezeit nochmal. Zudem wurden am Ende der Erfassung alle Schleusen manuell gesucht, dazu mussten alle bereits geladenen Wegpunkte (daraus bestehen die Gewässer. Ein Wegpunkt besteht aus einer Latitude, Longitude sowie einem Vorgänger und einem NachfolgeR) nochmal durchlaufen werden. Die Laufzeit war also effektiv 3n², in der NavShip-Anfangszeit überhaupt kein Problem.
Datum | Anzahl Gewässer | Anzahl Wegpunkte | Anzahl Berechnungen |
August 2016 | ca.200 | ca.11.000 | ca. 363 Millionen |
April 2017 | ca.900 | ca.155.000 | ca. 72 Milliarden |
Mai 2019 | ca. 2000 | ca. 298.000 | ca, 266 Milliarden |
Juni 2020 | ca. 2200 | ca. 330.000 | ca. 40 Millionen |
Was ist da passiert?
Die Anzahl der Gewässer und Wegpunkte ist stetig gestiegen in den letzten Jahren. Durch den neuen Algorithmus werden nun aber die Daten bereits auf dem Server berechnet und der App nur noch mitgeteilt, mit welchen Gewässern sich die Endpunkte jeweils zu verbinden haben. Die Schleusen sind zusammen mit Brücken, Marinas und Hafeneinfahrten direkt im Wegpunkt bereitgestellt, anstatt diese aufwändig nach dem Laden der Daten zuzuweisen. Die neue Laufzeit beträgt nur noch 20 n-log-n. Eine wesentliche Verbesserung, sogar bei kleinen n.
Bei Android kommt dieser Algorithmus bereits seit Januar 2020 zum Einsatz
iOS hat jetzt nachgezogen. Die ursprüngliche Ladezeit konnte von knapp 40 Sekunden auf 11 Sekunden reduziert werden. Bei Android war im Januar die Verbesserung von knapp 150 Sekunden auf 96 Sekunden wesentlich weniger auffällig. Woran liegt das, wenn doch die Anzahl der Berechnungen so stark abgenommen hat?
Berechnungen sind nicht alles in diesem Fall. Das Gerät wird zwar beim Start stark entlastet, aber dennoch besteht die Hauptlast hier in den Lesezugriffen. Bei iOS wird das Speichermanagement wesentlich effizienter gehandhabt, zudem sind im gleichen Jahr erschienene iOS-Geräte auch wesentlich performanter als ihre Android-Pendants. Mehr über die Leistung zwischen Android und iOS könnt ihr hier lesen. Die Headline sagt bereits alles: Das günstigste iPhone ist leistungsstärker als das teuerste Android – zudem harmonieren Apples Hardwarekomponenten wesentlich besser untereinander. Dafür ist der Funktionsumfang in den NavShip-Android-Versionen größer – als Entwickler hat man wesentlich mehr Freiheiten im Einbau von zusätzlichen Komponenten.
Im Normalfall fällt aber die Ladezeit auf beiden Plattformen überhaupt nicht ins Gewicht.
Sofern ihr nur 2-3 Fahrgebiete ausgewählt habt (was wir zur Reduzierung der Startdauer sehr empfehlen), beträgt die Ladezeit bei neueren Geräten rund 5-8 Sekunden. Dafür sind jetzt auch auf beiden Plattformen Seezeichen, Tonnen und Städtenamen komplett offline verfügbar, ebenso wie die Brückendurchfahrtshöhen, Marinas und Schleusen.
0 Kommentare