performant swing 구성 요소를 만드는 방법에 대해 질문이 있습니다.FIFO 버퍼의 Performant Bar Chart
구성 요소에는 막대 그래프가 있어야합니다. 구성 요소의 데이터는 separte FIFO 버퍼 클래스에 저장됩니다. 버퍼가 업데이트 될 때마다 구성 요소에 알립니다.
현재 데이터가 변경 될 때마다 구성 요소가 BufferedImage를 그립니다. 막 대형 차트 구성 요소의 paintComponent 메소드는 작성된 BufferedImage를 그립니다.
내 애플리케이션에 많은 데이터 변경 사항이 있기 때문에 BufferedImage의 페인팅을 개선하려고합니다. 막 대형 차트의 대부분은 동일하게 유지됩니다. 그냥 오른쪽으로 이동하고 막대 그래프의 왼쪽에 최신 데이터 변경 사항이 추가됩니다.
현재 BufferedImage 전체가 버퍼에 저장된 데이터에서 재생성됩니다. 내가 생각할 수있는 것은 AffineTransformation을 사용하여 이전 BufferedImage를 이동하고 최근에 추가 된 데이터 만 추가하는 것입니다. 이것에 의해, BufferedImage로 draw 조작의 양이 엄청나게 감소합니다.
그러나 이것이 응용 프로그램의 속도를 높이는 지 모르겠습니다. BufferedImage의 AffineTransformation은 얼마나 비쌉니까?
모든 의견을 환영합니다. 또한 performant 스윙 응용 프로그램을 만드는 방법에 대한 다른 힌트를 제공합니다. 베이스 라인의 일종없이 사전
예상되는로드 및 듀티 사이클을 표시하려면 최소한 질문을 편집해야합니다. – trashgod