TaffyDB Performance Testreihe

Mit der erfolgreichen Anwendung des Höher-schneller-weiter-Paradigmas auf JavaScript steigen auch die Begehrlichkeiten an die Implementierungen von Browserengine und Libraries. In einem vorigen Post habe ich eine Einführung in TaffyDB gegeben, eine clientseitge Datenhaltung für JavaScript. Um die Speicherung im Browser erfolgreich nutzen zu können, ist ausreichende Performance unerlässlich, weshalb ich die Library im Nachgang einer Reihe von Performancetests unterzog. Als Grundlage habe ich der Einfachheit halber das mitgelieferte Skript tests/speedtest.htm aus dem TaffyDB Quellcode benutzt und es mit steigender Anzahl von Records mehrfach durchlaufen lassen (ceteris paribus). Die Ergebnisse sind in nachfolgender Tabelle zusammengefasst (Angaben in Millisekunden) – grafisch dargestellt in Abbildung 1 .

Anzahl Datensätze Create and Fill Taffy Do 80% record remove via lookup Do a forEach Update Find Every Record Find Record x Sort by Value Desc RAM (in MB)
1000 17 20,6 46,6 14,4 3 37,2 12
2000 33,2 56,8 96,2 46,2 6,8 84,6 9
3000 48,6 113,2 145 99,8 10 132,8 10
4000 69,2 184,2 218 225 13,8 180,2 11
5000 83,8 324 238,4 262,2 17,8 239,8 12
6000 102,6 431,8 278,4 375,4 20,8 276 14
7000 118,6 508,2 438 551 24,2 328,2 16
8000 132,2 1367 380,8 660,4 27,4 383,8 18
9000 147,8 1175 618,6 823,8 31,4 436 19
10000 165 1001,4 662,8 1051,8 34,4 557 18

Wie zu sehen ist, skaliert TaffyDB sehr gut. Weitergehende Tests zeigen, dass dies auch mit größeren Datenmengen der Fall ist. Dabei ergeben sich jedoch Warnmeldungen des Browsers, dass ein ausgeführtes Skript nicht antwortet (siehe Abbildung 2). Einen Workaround bietet die setTimeout Funktion, die von Nicholas Zakas auf dessen Webseite sehr anschaulich und hintergründig erklärt wird. Da der Einbau des Workarounds die Aussage der dann durchgeführten Tests verändert, sind hier keine weiteren Ergebnisse aufgeführt.

Advertisements