Nachdem ich die App auf dem S10 entwickelt habe, gehen ich nun zu einem 6 Jahre alten Tablet zurück, wo nicht genügend Rechenleistung und Speicher zur Verfügung steht und optimiere die App da, wo es für das Tablet nötig ist.
z.b.
Während z.b. das Laden der 33MB auf dem S10 unter 200msec fertig war, dauert es auf dem Tablet 5 Sekunden. Also ersetze ich die harmlose Lade-Routine durch eine asynchrone mit Fortschrittsbalken, damit der User was zu sehen kriegt und das Gefühlt hat, es geht voran.
z.b.
Das komplette Berechnen des Datenfeldes dauerte auf dem S10 unter 100msec und auf dem Tablet schon wieder 5 Sekunden. Ich ersetze also die harmlose Berechung durch eine asynchrone, die dem 100msec-Timer eine Chance lässt, die "Echtzeit"-Aktionen für den User scheinbar weiterlaufen zu lassen. Ihr kennt das bestimmt von Spielen... Die Berechnung des gesamten Feldes wird auf 50 Teilfelder aufgeteilt, so dass jedes nur 100msec benötigt. Dadurch kann der Timer wieder ticken.
Ich mache ja Musiksachen und da darf der Audio-Stream halt nie abreissen.
hierbei würden natürlich Algorithmen helfen, die deutlich schneller laufen als andere. Wie z.b. die ByteConverter-Library von Erel. Ich dachte vielleicht gibt es ja sowas auch für Multiplikationen Additionen oder große Arrays.
Momentan habe ich das asynchrone Laden bereits im Griff und auch die Datenfeldberechnung läuft getaktet. Dadurch reisst nun auch auf dem Tablet der Audio-Stream nicht mehr ab, owohl ich ihn nur alle 100msec mit 100msec-Material versorge.
Screenshot: