Michael Kuhn: Speicher und Performance Frage für Javascript

Beitrag lesen

Hallo Mathias,

vielen Dank für die sehr hilfreichen Informationen. Ich glaube zudem auch eine Ursache in deinen Erläuterungen gefunden zu haben, warum in manchen Fällen die Anwendung auf einem Mobilgeräte z.Z. noch abstürzt, es könnte in der Tat der fehlende Speicher sein. Da bisher die Daten beim web worker nur per postMessage transferiert werden (da noch nicht alle weit verbreiteten Browser oauch den Austausch über objekte können).

Ich werde jetzt auf jeden Fall einmal probieren, was der trade-off zwischen einer vorgeschalteter Datenoptimierung ist. Gegenwärtig ist es von mir auf Grund der Anwendung so gewählt, dass ich einen web worker öffne und die kompletten Daten zuweise, den web worker aber "offen" lasse und nicht für jede neue Abfrage die Daten noch einmal schicke. Der web worker ist ja gerade deshalb notwendig, weil die Auswertung über die gesamten Daten zu führen sind und daher eine Verkleinerung ausserhalb des web worker schon zu einem freeze des UI führen könnte. Der web worker schickt nur das entsprechende Ergebnis zurück und nicht noch einmal die kompletten Daten (ich denke das kommt dem map/reduce Gedanken nahe). Konkret nutze ich die taffyDB database library im web worker um Auswertungen zu fahren und das Ergebnis auszugeben. Funktioniert soweit ganz gut, nur eben ist es jetzt daran, an dem Performancerad zu drehen.

Deinen Ausführungen entnehme ich aber auch, dass es nicht sinnvoll für javascript erscheint, den Datentype für Identifier zu ändern, etwa in integer?? Man müsste wohl dazu mehr wissen, ob eine gewissen Struktur vom JIT als solche erkannt wird. Ich hatte einen Vortrag zur V8 von Google mir angeschaut, wo darauf verwiesen wurde, dass man in Javascript auch darauf achten sollte, wie man gewisse Funktionen schreibt, da im Idealfall die Javascript-Engine das soweit optimieren kann, damit man nahe an die Performance von typisierten Sprachen herankommt. Aber das ist zum jetztigen Zeitpunkt für das Projekt noch alles etwas zu viel Aufwand. Ich werde es erst einmal versuchen, allein den Datenumfang zu reduzieren.

Cheers,
Michael

PS: Solche performance Tipps sollte auch mal auf bei selfghtml.org für Javascript gesammelt werden. Ich bin da nicht der Einzige, der ein Interesse an solchen Information hat und das Internet nur sehr verstreut Information dazu bereithält.