Вот несколько советов от моей головы. Если бы вы были более конкретны и что вы пытались сделать, я мог бы помочь больше. Звучит как игра, но я не хочу предполагать.
Нарисуй только то, что тебе нужно! Не вызывайте вслепую все время вслепую (), попробуйте некоторые из братьев и сестер, такие как repaint (Rect) или repaint (x, y, w, h).
Будьте очень осторожны с альфа-смешиванием, так как это может быть дорогой операцией для смешивания изображений / примитивов.
Старайтесь максимально отрисовывать / кэшировать. Если вы обнаружите, что снова и снова рисуете круг, рассмотрите возможность рисования в BufferedImage, а затем просто нарисуйте BufferedImage. Вы жертвуете памятью ради скорости (типично для игр / графики с высокой производительностью)
Рассмотрите возможность использования OpenGL, используйте JOGL из LWJGL. JOGL больше похож на Java, тогда как LWJGL предоставляет больше игровых функций поверх доступа OpenGL. OpenGL может рисовать на порядки (с соответствующим оборудованием и драйверами), чем Swing.