2012-12-12 20 views
27

Pracuję nad wieloplatformową aplikacją mobilną za pośrednictwem MoSync. Odnośnie wykresu JavaScript do wyświetlania danych pochodzą z Bluetooth w urządzeniu mobilnym, potrzebuję API wykresu JavaScript, który ma bardzo wysoką szybkość renderowania i wydajność. Powinien być wystarczająco szybki, aby rysować/przerysowywać/aktualizować wykres, ponieważ dane będą wstrzykiwane do widoku WWW. AFAIK z testowania kilku interfejsów API, wtrysk danych zmniejsza szybkość w aplikacjach mobilnych. FFI, następujące punkty mogą być pomocne, aby pokazać, jak szybki powinien być wykres, aby działał płynnie w aplikacji.Wysokowydajny wykres JavaScript API dla aplikacji mobilnych za pomocą HTML

  1. Aktualizacja: każdy 500ms lub ewentualnie 250ms
  2. Nowe dane na aktualizacji: trzy matryce o rozmiarze 50 dla trzech serii
  3. danych przechodzić (z Bluetooth do wykresu API): C++> > UI (HTML) >> WebView >> wykres API

Zauważ, że znam mnóstwo dostępnych interfejsów API wykresów JavaScript, jednak potrzebuję porady, która rozważył wyjaśnioną sytuację.

Odpowiedz

40

Poniżej znajdują się moje badania. Mamy nadzieję, że pomoże to znaleźć rozwiązanie.

  1. Comparison of JavaScript Data Visualization Libraries specjalnie mówi, że flotr2 jego osiągi. Został on wysłany w czerwcu 2012.

    Komórka przyjazny: Tak, zbudowany pod kątem wydajności i obejmuje wydarzenia touch/Multi-Touch

    Ciekawe cechy: rozszerzalny ramowych wtyczki, dopasowane do wydajności. JSON API, programowalne dla interaktywności

  2. RGraph: Znani rozwiązanie, które w szczególny sposób zajmuje wydajność i kwestie mobilnych. They have a whole page breaking down how they achieve superior performance.

  3. JSXGraph: Artykuł porównawczy 13 Chart and Graph plotting javascript plugins stwierdza, że ​​"szczególną uwagę zwrócono na optymalizację wydajności." Jednak nie widziałem na tej stronie żadnych informacji o obsłudze urządzeń mobilnych.

  4. Czasami warto spojrzeć na nich:

    http://jsperf.com/search?q=chart

    Jedynym mogę tam zobaczyć, że byłoby Jakiekolwiek użycie dla was jest flot vs. Raphael, choć. Oczywiście zawsze możesz spróbować zbudować na tym i napisać własne testy dla innych bibliotek, które Cię interesują.

    poprzez https://stackoverflow.com/a/9900526/1085891

  5. Niestety Javascript Graphs and Charts libraries porównanie nie ma kryteriów skuteczności, ale pomyślałem, że może nadal być pomocne.

  6. Innym poprzez obr/programowanie: https://canvasjs.com

Extra:JavaScript Performance On Mobile Devices

+0

Dziękujemy za szczegółową odpowiedź. flotr2 działa płynnie na mojej aplikacji mobilnej, a jej wydajność jest niesamowita, ponieważ próbowałem dodać trzy tablice o rozmiarze 100 co 250ms. Niewiarygodne :) – utvecklare

+2

Kolejne poprzez r/programowanie: http://canvasjs.com/ – JSuar

3

Mam doskonałe doświadczenia z biblioteką wykresów Highcharts z dużymi zbiorami danych (do 10000 punktów). Wykorzystuje SVG i VML do renderowania, który jest znacznie szybszy niż rozwiązania oparte na płótnie. Dodatkowo, ponieważ nie korzysta z lampy błyskowej, będzie działać na większości urządzeń mobilnych.

+1

Jak radzi sobie z danymi w czasie rzeczywistym? Z mojego doświadczenia wynika, że ​​wywoływanie funkcji addPoint() w celu dodawania nowych punktów co sekundę (lub kilka razy na sekundę) powoduje wyciek dużej ilości pamięci. –

+0

Dzięki Ryanowi, użyłem także zaawansowanych algorytmów, ale problem z długim opóźnieniem jest nadal dostępny podczas próby aktualizacji serii przez wstrzyknięcie kodu JavaScript do widoku WWW, a następnie wywołanie metody addPoint(). – utvecklare

+0

Spróbuj wywołać 'Series # setData()' i po prostu zaktualizuj dane dla całej serii. –

4

Oto kolejny High Performance wykresów Biblioteka nazywa CanvasJS

świadczy ona ponad 100 tysięcy punktów danych w 100-200ms. Ponieważ jest oparty na Canvas, działa na większości nowoczesnych urządzeń.

Powiązane problemy