Próbuję znaleźć narzędzie do drukowania danych (głównie wykresów liniowych i podobnych), które mogą być używane w aplikacjach o wysokiej wydajności. Moje okno danych zwykle zawiera od 500 do kilku tysięcy punktów, a ja byłbym szczęśliwy z liczbą klatek na sekundę wynoszącą około 10. Otrzymuję moje dane jako strumień binarny na gnieździe. Jestem na Mac OS X.Wyświetlanie danych w czasie rzeczywistym o wysokiej wydajności
Próbowałem już kilku rozwiązań i poniżej omawiam z nimi moje doświadczenia.
R: strasznie powolny i nie może nadążyć, bolesne czytać gniazd, migotanie wykresie.
matplotlib: Bardzo powolny, ale trochę użyteczny, również. Wymaga to jednak mnóstwa maszyn Pythona do uruchomienia, a IMO API jest dość nieprzejrzysty. Podczas ciągłej aktualizacji okno zawierające wykres staje się modalne i pojawia się piłka plażowa Mac - nie jest to świetne miejsce do interakcji z użytkownikiem.
Gnuplot: Znacznie lepsza wydajność i interfejs API. Jednak przesyłanie dużych ilości danych do gnuplot odbywa się poprzez generowanie tymczasowych plików ASCII (!) - oznacza to, że jeśli moja liczba klatek na sekundę wzrośnie, zaczynam robić tony odczytów dysku i jest to problem z wydajnością.
Jakieś inne sugestie?
Twoje pytanie wydaje się podobny do kopalni: http://stackoverflow.com/questions/8946474/is-it-possible-to-speed-up-matlab-plotting-by-calling-cc-code-in-matlab – memyself
Nie jestem pewien, czy możesz to zrobić poza C++ lub innym językiem, ale zapobiegam migotaniu poprzez malowanie na bitmapie pamięci, a następnie blaknięcie jej na ekranie. Jest to w rzeczywistości szybsze, ponieważ nie przycina się do nakładających się prostokątów podczas malowania. Ponadto, dla użytkownika wygląda szybko, nawet jeśli tak nie jest. –
@MikeDunlavey Dzięki - ale jakich technologii używasz do tworzenia i malowania. – Jake