Hallo Community!
Ich habe eine Java-Anwendung die mehrere tausend mal pro Sekunde Graphics2D.fillOval(x,y,width,height) aufruft.
Leider braucht diese Methode sehr viel CPU-Zeit. Im Vergleich zu fillRect(x,y,width,height) ist sie vielleicht 20x langsamer.
Ich denke es liegt zum Teil daran dass die Methode ja jeden Punkt im Umfang des Kreises einzeln berechnen muss. Da aber jeder Kreis gleichgroß ist und nur in seiner Farbe variiert kann man dort vielleicht etwas machen dachte ich... leider wäre es zu speicherintensiv (10-20 mb) jede einzelne benötigte Variation der Farbe in einem BufferedImage abzulegen (es variieren rot und Transparenz, Grün und Rot sind 0 oder 100 . Transparenz wurde beim Speicherverbrauch nicht mitberechnet da man das BufferedImage transparent zeichnen kann) Gibt es vielleicht eine Möglichkeit vorher den Kreis berechnen zu lassen und hinterher die Kopien nur in einer anderen Farbe zu zeichnen?
Ich bin für alle Vorschläge dankbar
mfg. Spyboot
Ich habe eine Java-Anwendung die mehrere tausend mal pro Sekunde Graphics2D.fillOval(x,y,width,height) aufruft.
Leider braucht diese Methode sehr viel CPU-Zeit. Im Vergleich zu fillRect(x,y,width,height) ist sie vielleicht 20x langsamer.
Ich denke es liegt zum Teil daran dass die Methode ja jeden Punkt im Umfang des Kreises einzeln berechnen muss. Da aber jeder Kreis gleichgroß ist und nur in seiner Farbe variiert kann man dort vielleicht etwas machen dachte ich... leider wäre es zu speicherintensiv (10-20 mb) jede einzelne benötigte Variation der Farbe in einem BufferedImage abzulegen (es variieren rot und Transparenz, Grün und Rot sind 0 oder 100 . Transparenz wurde beim Speicherverbrauch nicht mitberechnet da man das BufferedImage transparent zeichnen kann) Gibt es vielleicht eine Möglichkeit vorher den Kreis berechnen zu lassen und hinterher die Kopien nur in einer anderen Farbe zu zeichnen?
Ich bin für alle Vorschläge dankbar
mfg. Spyboot
Zuletzt bearbeitet: