Ponieważ próbuję znaleźć bibliotekę szybkich wykresów, aby wyświetlać wykresy na urządzeniach mobilnych, wydajność była dla mnie ważna. Musiał też mieć licencję umożliwiającą komercyjne wykorzystanie. Porównałem:
- c3, który jest oparty na d3 i dlatego używa SVG
- chart.js, który używa kanwy
Wykresy są ładowane wewnątrz komponentu WebView w natywnej aplikacji, a wszystkie dane (w tym biblioteka JS) są lokalne, więc nie ma spowolnienia z powodu żądań http. Aby jeszcze bardziej zmaksymalizować wydajność, umieściłem wszystko w jednym pliku.
Załadowałem 4 wykresy (linia, słupek, kołowy, kombinacja linia / słupek) razem z około 500 punktami danych.
Mój pomiar czasu nie obejmował faktycznego ładowania strony html. Mierzyłem od momentu, kiedy zacząłem używać kodu biblioteki wykresów do końca renderowania. Wszystkie animacje wykresów zostały wyłączone.
C3 zajmowało około 1500-1800 ms na nowoczesnych urządzeniach z Androidem i iPhone'ach. iPhone działał o około 100 ms lepiej niż Android.
Chart.js zajęło około 400-800 ms. Android działał około 300 ms lepiej niż iPhone.
Nic dziwnego, SVG jest wolniejszy. W zależności od przypadku użycia może być zbyt wolny.
Na komputerze stacjonarnym renderowanie w c3 trwało około 150-200 ms, a charts.js około 80-100 ms. Uruchomienie tego samego testu w emulatorze Androida i iPhone'a dało taki sam wynik jak na komputerze stacjonarnym. Tak więc spowolnienie na urządzeniach mobilnych jest zdecydowanie spowodowane ograniczeniami sprzętu / przetwarzania.
Mam nadzieję, że to pomoże