178 lines
7.7 KiB
Markdown
178 lines
7.7 KiB
Markdown
# Ergebnis
|
|
|
|
## Systemauslastung von Flutter
|
|
|
|
Aus dem "System Informationen" Feature konnte abgelesen werden,
|
|
dass direkt nach dem Start von Flutter-Pi ein RAM Verbrauch von ungefähr 130 MB
|
|
und bei Flutter-Auto ungefähr 160 MB angezeigt wird. Die 30MB Differenz liegt
|
|
daran, dass bei Flutter-Auto zusätzlich noch Cage und Wayland gestartet werden.
|
|
|
|
Die CPU Auslastung schwankt bei beiden Embeddern ungefähr zwischen 15 und 20 Prozent.
|
|
Hier ist zu beachten, dass das nicht die CPU Auslastung im vollem Leerlauf ist, da
|
|
auch die Graphen angezeigt werden, doch ist es ein guter Annäherungs-Wert für einen
|
|
ungefähren Wert bei Inhalten mit wenig Animationen.
|
|
|
|
## Benchmark Ergebnisse
|
|
|
|
### Flame Sprite Rendering Benchmark Ergebnis
|
|
|
|
Der Flame Sprite Rendering Benchmark wurde drei mal
|
|
auf jedem Gerät und Embedder durchgeführt, am Raspberry Pi 4
|
|
wurde zusätzlich noch Flutter im normalen Desktop Modus
|
|
vom Raspberry Pi OS getestet. Die Ergebnisse sind in
|
|
Tabelle \ref{flameSpriteRenderingBenchmark} und \ref{flameSpriteRenderingBenchmark2} zu sehen.
|
|
|
|
Mit einem Benchmark an einem Macbook Air mit dem Apple M2 Chip konnte ein Wert von ungefähr 1680 erreicht werden.
|
|
Dieser Wert wird als Referenzwert für den Maximalwert genommen, der bei dem Benchmark mit der Verzögerung innerhalb
|
|
der 30 Minuten erreicht werden kann, denn ohne Verzögerung erreicht der M2 Chip über 22000 Animationen bevor die
|
|
Framerate auf unter 60 Bilder pro Sekunde fällt. Im Benchmark Test wird der M2 Chip so nicht ausgelastet und die
|
|
1680 Animationen sind rein durch die Verzögerung bedingt. Keiner der Embedder an den Testgeräten konnte den Referenzwert erreichen,
|
|
es wird also kein Embedder "ausgebremst" im Test.
|
|
|
|
\begin{center}
|
|
|
|
\begin{table}[h]
|
|
\caption{Flame Sprite Rendering Benchmark Ergebnisse am Pi 4}
|
|
\label{flameSpriteRenderingBenchmark}
|
|
\resizebox{\textwidth}{!}{%
|
|
\begin{tabular}{|l|l|l|}
|
|
\hline
|
|
Flutter Embedder & Ergebnisse (Animationen nach 30 Minuten) & Durchschnittlich (gerundet) \\ \hline
|
|
Flutter-Pi & 537, 543, 544 & 541 \\ \hline
|
|
Flutter-Auto mit Cage & 1025, 1163, 1129 & 1106 \\ \hline
|
|
Flutter Desktop & 223, 211, 212 & 215 \\ \hline
|
|
\end{tabular}%
|
|
}
|
|
\end{table}
|
|
|
|
\end{center}
|
|
|
|
\begin{center}
|
|
|
|
\begin{table}[h]
|
|
\caption{Flame Sprite Rendering Benchmark Ergebnisse am Pi 0 2W}
|
|
\label{flameSpriteRenderingBenchmark2}
|
|
\resizebox{\textwidth}{!}{%
|
|
\begin{tabular}{|l|l|l|}
|
|
\hline
|
|
Flutter Embedder & Ergebnisse (Animationen nach 30 Minuten) & Durchschnittlich (gerundet) \\ \hline
|
|
Flutter-Pi & 376, 427, 390 & 398 \\ \hline
|
|
Flutter-Auto mit Cage & 736, 739, 712 & 729 \\ \hline
|
|
\end{tabular}%
|
|
}
|
|
\end{table}
|
|
|
|
\end{center}
|
|
|
|
Es lässt sich festhalten, dass Flutter-Auto eine deutlich
|
|
bessere Leistung aufweist als Flutter-Pi. Am Pi 4 ist Flutter-Auto
|
|
im Durchschnitt ungefähr 68.6 Prozent schneller als Flutter-Pi und
|
|
am Pi Zero 2W ist Flutter-Auto im Durchschnitt ungefähr 58.74 Prozent
|
|
schneller.
|
|
|
|
Außerdem lässt sich festhalten, dass Flutter im normalen
|
|
Desktop Modus mit dem offiziellen Embedder für Linux sehr
|
|
schlecht abschneidet. Die Anwendung ist spürbar langsamer
|
|
und hat zusätzlich große Probleme bei der Touch-Eingabe,
|
|
denn Wischgesten werden nicht erkannt und man kann nicht
|
|
die Liste im News Feature scrollen, nur normale Klicks
|
|
werden erkannt.
|
|
|
|
### Rogue Shooter Benchmark Ergebnis
|
|
|
|
Der Rogue Shooter zeigt wie auch der Flame Sprite Rendering
|
|
Benchmark, dass Flutter-Auto die beste Leistung aufweist.
|
|
Mit Flutter-Auto am Pi 4 ist die Framerate meistens im Bereich von
|
|
50 Bildern pro Sekunde und bricht manchmal kurz auf den
|
|
40er Bereich ein, selten kommt es zu einem Einbruch auf
|
|
den 30er Bereich. Flutter-Pi hingegen bricht sehr oft in
|
|
den 40er und 30er Bereich ein.
|
|
Am Pi Zero 2W ist die Leistung anfangs auch gleichermaßen
|
|
deutlich besser, sie bricht jedoch sowohl bei Flutter-Pi
|
|
und Flutter-Auto auf ungefähr genau 30 Bilder pro Sekunde
|
|
ein und bleibt durchgehend auf diesem Niveau. Hier ist
|
|
nicht genau klar weshalb die Framerate förmlich auf 30
|
|
Bilder pro Sekunde eingefroren wird, es erscheint ähnlich
|
|
zu einem "Framerate Lock" auf 30 Bilder was jedoch nicht
|
|
in Flutter oder Flame eingestellt wurde und Flutter sollte
|
|
immer versuchen die maximale Framerate zu erreichen.
|
|
|
|
### VSync Test Ergebnis
|
|
|
|
Der VSync Test zeigt, dass sowohl Flutter-Pi als auch
|
|
Flutter-Auto auf beiden Testgeräten ohne Tearing Effekte
|
|
laufen. Wird in den Einstellungen das Performance-Overlay
|
|
aktiviert, so kann man sehen, dass besonders bei Flutter-Pi
|
|
leichte Tearing Effekte auftreten. Es lässt sich also
|
|
festhalten, dass allein das Betrachten der Leistung
|
|
mit dem Overlay die Leistung beeinträchtigt.
|
|
|
|
### Video Benchmark Ergebnis
|
|
|
|
Sowohl der Raspberry Pi 4 als auch der Raspberry Pi Zero 2W
|
|
können das Video in der Auflösung von 720p flüssig
|
|
wiedergeben. Schon bei der Auflösung von 1080p gibt es
|
|
jedoch Probleme. Der Pi 4 kann das Video noch fast
|
|
flüssig wiedergeben mit einer leicht verzögerten Wiedergabe
|
|
und der Pi Zero 2W zeigt starke Verzögerungen
|
|
beim Abspielen des Videos. Die Wiedergabe in 4K ist
|
|
auf beiden Geräten nicht möglich, es ruckelt stark am Pi 4
|
|
und der Pi Zero 2W friert beim Video fast komplett ein.
|
|
Wie bereits genannt unterstützt nur Flutter-Pi die
|
|
Wiedergabe von Videos.
|
|
|
|
### Simple Tiles Map Benchmark Ergebnis
|
|
|
|
Die Karte kann am Raspberry Pi 4 flüssig ohne Probleme
|
|
gerendert werden und auch Multi-Touch Eingaben werden
|
|
ohne Ruckler oder Verzögerungen verarbeitet. Beim Raspberry
|
|
Pi Zero 2W gibt es jedoch Probleme, wenn man die Sicht zu schnell
|
|
die Sicht über die Karte bewegt kann die
|
|
Karte nicht mehr flüssig gerendert werden und es kann
|
|
dazu kommen, dass die Anwendung kurz einfriert und manchmal
|
|
auch abstürzt. Hier kommt der Pi Zero 2W an
|
|
seine Grenzen vom Arbeitsspeicher.
|
|
|
|
## Bewertung von Flutter als Entwicklungsplattform für eingebettetes Linux
|
|
|
|
Alle der Anforderungen für die geplante Flutter Anwendung konnten erfüllt werden
|
|
und die Anwendung konnte erfolgreich mit beiden Embeddern in einer angepassten
|
|
Linux Distribution getestet werden. Besonders herauszustellen ist, dass durch
|
|
das Hot-Reload Feature von Flutter die Entwicklung sehr effizient und schnell
|
|
von statten ging. Zusätzlich ist die Dokumentation von Flutter sehr gut, doch
|
|
speziell für die Entwicklung von Flutter in eingebetteten Systemen und anderen
|
|
Embeddern als Desktop und Mobile, gibt es nur wenige Informationen, welche
|
|
verstreut im Internet herausgesucht werden mussten um das Projekt erfolgreich
|
|
umzusetzen. Der Einsatz der CustomPainter in Flutter zeigte auch, dass man
|
|
falls notwendig in Flutter relativ einfach angepasste komplexere Widgets
|
|
erstellen kann wie die Pixel-Matrix für die Ansteuerung der RGB-Matrix.
|
|
|
|
## Zukünftige Verbesserungen und Ideen
|
|
|
|
### Behebung von Fehlern
|
|
|
|
Das Fokus-Problem bei Flutter-Auto muss behoben werden um
|
|
die es produktionsbereit zu machen. Es sollte hier
|
|
untersucht werden, ob das Problem durch die Nutzung von
|
|
Cage als Wayland-Kiosk verursacht wird.
|
|
|
|
Des weiteren sollte analysiert werden, weshalb die SharedPreferences
|
|
bei der ersten Verwendung nicht abgespeichert werden.
|
|
|
|
### Neue Rendering-Engine
|
|
|
|
Flutter bekommt in Zukunft eine neue Rendering-Engine names
|
|
"Impeller" welche SKIA ersetzen wird. Hier kann untersucht
|
|
werden ob Impeller die Leistung von Flutter mit Linux und
|
|
den anderen Embeddern verbessert. Zum Zeitpunkt der Arbeit
|
|
unterstützt Impeller offiziell nur iOS und die Unterstützung
|
|
für Android ist in der Beta Phase. Unter macOS kann Impeller
|
|
auch bereits als "Preview" getestet werden.
|
|
Impeller wird zusätzlich auch in Zukunft unter allen anderen
|
|
Plattformen als iOS und macOS die Vulkan API unterstützen.
|
|
Der zusätzliche Wechsel von OpenGL zu Vulkan könnte die
|
|
Leistung eventuell auch verbessern, da Vulkan eine modernere
|
|
API ist und der Nachfolger von OpenGL ist. [@googleinc.ImpellerRenderingEngine]
|
|
|
|
# Schlussfolgerung
|