Uważam, że wydajność rysowania JavaFX 2 jest gorsza niż w przypadku Swing. Myślę, że jednym z powodów jest to, jak rysujesz rzeczy, np. podczas rysowania linii, należy utworzyć obiekt Line dla każdej linii i dodać go do jakiegoś kontenera, podczas gdy w Swingu jeden dostaje Graphics2D raz, a następnie robi drawLine bez tworzenia nowego obiektu za każdym razem. Czy istnieje zatem bardziej wydajny sposób rysowania przy użyciu JavaFX 2, np. jeśli musisz narysować około 3000 łuków? Jaka jest najlepsza "powierzchnia do rysowania"? Obecnie używam Group. Dzięki za podpowiedź!Wydajność rysowania JavaFX 2
Odpowiedz
Twoje obecne podejście do używania grupy jest prawdopodobnie w porządku, a prawdopodobnie osiągniesz wydajność 3000 łuków w grupie, która jest całkowicie akceptowalna dla użytkowników aplikacji.
Obecną alternatywą dla używania grupy byłoby użycie paneli układu, które dodałyby wygodną funkcjonalność, ale dodałyby dodatkową warstwę narzutową, co jest niepotrzebne, gdy mamy tysiące łatwych do ręcznego ułożenia obiektów.
Zobacz dyskusję na temat nadchodzącego interfejsu bezpośredniego rysowania (zwanego węzłem Canvas) dla języka JavaFX 2.2 i jego konsekwencji w wersji JavaFX mailing list archive.
Chociaż może wydawać się mniej wydajnym przyklejeniem obiektów do kontenera, implementacja kontenera może, jeśli chce, skorzystać z przyspieszonego trybu zachowującego sprzęt renderujący wbudowanego w nowoczesne procesor graficzny. Należy również pamiętać, że architektura JavaFX wewnętrznie śledzi brudne obszary i zapisuje wyniki kosztownych operacji renderowania w celu zwiększenia wydajności. Dlatego korzystanie z kontenera samo w sobie nie oznacza wolniejszej wydajności niż interfejs bezpośredniego rysowania, który może polegać na implementacji w trybie natychmiastowym.
Wybór powierzchni rysunkowej zależy od aplikacji. Najlepszą powierzchnią dla większości aplikacji JavaFX będzie zbiór węzłów scenegraph zamiast węzła canvas. Używanie wielu węzłów w scenariuszu zamiast pojedynczego węzła Canvas (zazwyczaj) jest łatwiejsze do opracowania, a wydajność będzie całkowicie akceptowalna.
W końcu, prawdopodobnie wiele artykułów na blogu zostanie napisanych w celu porównania wydajności płótna z wieloma obiektami scenograficznymi i być może z innymi strukturami, takimi jak płótno html, java2d, swing itp. Więc z czasem będzie łatwiej odpowiedzieć na takie pytanie.
pokrewne
Osvaldo na JavaFX performance analysis, choć stary, znajduje się również w głębi omówienie niektórych kwestii poruszonych w swoim pytaniu.
Istnieje ładny rozdział na temat Performance Tips and Tricks w openjfx wiki.
Istnieją pewne związane StackOverflow JavaFX pytania wydajności:
W JavaFX 2.2 obiektu podobnego do HTML5 Canvas
planowane jest dodana, która idealnie pasuje ci przedmioty od rysowanie wielu primitevów.
Zobacz dokumenty załączone do następnego wydania na szczegóły: http://javafx-jira.kenai.com/browse/RT-17407
Dzięki za link, ciekawi mnie, jak dobrze będzie działać, kiedy zostanie wydany :-) –
wyglądają słupek Pixel Graphics eksperymentu dla nutą. Istnieją dwa podejścia, w których w pierwszej zastosowano Group
i ImageView
w innym. Chociaż sam tego nie próbował, autor mówi, że podejście jest szybsze i ma lepszą wizualizację. Z drugiej strony używa przestarzałej metody API.
- 1. Jak zwiększyć wydajność rysowania bitmap na Androidzie
- 2. Wydajność podczas rysowania ImageView z zaokrąglonymi rogami
- 3. JavaFX 2 debug css
- 4. JavaFX 2.x TableView lokalizacja
- 5. JavaFX-2 - ustaw różne style
- 6. GroupBox/TitledBorder w JavaFX 2?
- 7. Jak używać FXMLLoader.load() - JavaFX 2
- 8. Sencha Touch 2 - Wydajność Androida
- 9. Wydajność ARM Thumb/Thumb-2
- 10. Jak powiększać węzeł JavaFX 2 Canvas?
- 11. JavaFX 2: Uzyskaj indeks wiersza TableCell
- 12. Javafx 2 TreeView - ukryj element root
- 13. Wybierz element kombo w JavaFX 2
- 14. JavaFX 2 - Napisz Parent obiektom FXML Plik
- 15. Jak przetestować JavaFX 2 w środowisku bezgłowym?
- 16. Tło z 2 kolorami w JavaFX?
- 17. Poprawny sposób rysowania tekstu w OpenGL ES 2
- 18. rysowania wielu linii BufferedImage
- 19. JavaFX 2.x: Jak edytować linie rysowane na XY LineChart?
- 20. Jak sformatować wiadomość JavaFX 2 na pełnym ekranie?
- 21. Jak utworzyć nakładkę na przeglądarkę internetową JavaFX 2?
- 22. Jak uczynić JNLP pobrać poprawną wersję JavaFX 2?
- 23. Renderowanie POJO w komborze JavaFX 2 bez przesłonięcia metody toString()
- 24. Dlaczego Angular 2 ma lepszą wydajność niż Angular 1?
- 25. Najbardziej efektywny sposób rysowania cząsteczek w języku HTML5 na iPadzie 2
- 26. Różnica między ciągiem do rysowania i rysowania-mdpi
- 27. Ścieżka rysowania systemu Android
- 28. C# biblioteka rysowania wykresów?
- 29. Edytor płótna do rysowania
- 30. Okno rysowania w JFrame
Dziękuję bardzo za te szczegółowe informacje! –