.NET 5 WPF Datagrid에 대한 성능 벤치마크 분석 > 블로그 & Tips

본문 바로가기

ComponentOne

블로그 & Tips

.NET 5 WPF Datagrid에 대한 성능 벤치마크 분석

페이지 정보

작성자 GrapeCity 작성일 21-06-11 10:44 조회 52회 댓글 0건

본문

성능은 UI 컨트롤을 개발할 때 고려하는 주요 요소 중 하나입니다. GrapeCity는 모든 컨트롤의 성능 개선을 위한 더 나은 전략을 찾기 위해 끊임없이 노력하고 있습니다. 이전 버전에 있었던 몇 가지 병목 현상을 해결하기 위해 .NET 5에서는 WPF용 FlexGrid를 다시 평가해 다시 설계했습니다.

이 포스팅에서는 .NET 5 DataGrid인 FlexGrid를 개발하는 데 사용한 기준을 보여주고 FlexGrid의 성능을 타사의 WPF DataGrid의 성능과 비교합니다.


배경

DataGrid 성능을 측정할 때 고려해야 할 가장 중요한 두 가지 측면은 로딩스크롤입니다. 로딩은 한 번만 발생하지만 스크롤은 지속적으로 발생해 사용자들에게 더 자주 보이기 때문에 스크롤 성능이 일반적으로 더 중요합니다.

물론, 로딩도 중요하기 때문에 두 가지 측면을 함께 해결하여 적절한 균형을 찾는 것이 중요합니다.

DataGrid는 수백 개 항목이 포함된 큰 데이터 집합 표시를 지원해야 하므로, 각 항목마다 셀을 만드는 것은 로드 시간 및 메모리 사용량 측면에서 비현실적입니다. 대신, 사용자가 볼 수 있는 것만 표시하는 UI 가상화라는 기술을 사용합니다.

사용자가 그리드를 스크롤하면 그 아래에 새 뷰포트가 다시 생성된 후 표시되어 사용자에게는 이미 있었던 것 같은 느낌을 줍니다.

UI 가상화는 최적화된 로드 성능에 유용하고 필요합니다. 하지만 스크롤 시간 문제가 해결되지 않습니다. 스크롤 이벤트가 발생할 때마다 새 요소를 표시하기 위해 시각적 트리를 짧은 시간 내에 자주 다시 만들어야 합니다.

즉, 뷰포트의 모든 셀을 최대한 빨리 표시하는 빠른 배치가 중요합니다. 셀을 만들어 시각적 트리에 추가하는 데 상당한 시간이 걸리기 때문에 셀을 *재활용*하면 레이아웃을 계산하는 데 걸리는 시간을 단축할 수 있습니다.

그러나 UI 가상화가 모든 문제를 해결하는 것은 아닙니다. 엄청나게 큰 데이터 소스를 사용하는 경우 행 컬렉션에는 소스 내 항목 수만큼 많은 행이 있게 되고, 이 수만큼 개체를 만들면 로드 시간이 오래 걸립니다.

이 문제를 피하기 위해 모델 가상화 기술을 구현하여 필요할 때까지 열과 행의 생성을 지연시킵니다.


수치

성능 비교를 위해 3가지 WPF DataGrid를 모두 테스트하여 Microsoft DataGrid와 비교했습니다. 다음 4가지 DataGrid를 테스트했습니다.

  1. Microsoft DataGrid for WPF(.NET 5)

  2. ComponentOne FlexGrid for WPF(.NET Framework 4.5.2)

  3. ComponentOne Legacy DataGrid for WPF(.NET Framework 4.5.2)

  4. ComponentOne FlexGrid for WPF(.NET 5)


각 DataGrid가 같은 수의 셀을 표시하도록 위 DataGrid는 .NET 5 응용 프로그램에서 테스트했습니다. 결과는 여러 번에 걸친 테스트의 평균을 산출한 값입니다.

아래 데이터는 행 1,000개 , 10,000개, 100,000개 및 1백만 개를 스크롤한 경우와 로드한 경우에 대한 최초 결과를 보여줍니다.


스크롤 성능

스크롤 성능


로드 성능

로드 성능


결과

성능 비교 결과는 다음과 같습니다.

  • .NET 5 FlexGrid의 스크롤 성능은 Microsoft DataGrid보다 3배 더 빠르고, WPF .NET Framework 4.5.2 이전 버전보다 1.8배 더 빠릅니다.

  • .NET 5 FlexGrid의 로드 성능은 Microsoft DataGrid보다 3.2배 더 빠르고, C1DataGrid보다는 2.3배 더 빠르고, 4.5.2 FlexGrid와는 매우 비슷합니다.

.NET 5 FlexGrid는 행 수에 상관없이 가장 일정한 성능을 보여주었으며, 모든 시나리오에서 로드 및 스크롤 시간이 가장 빨랐습니다.

.NET 5 FlexGrid는 모델 가상화 구현을 통해 큰 데이터 소스 로드와 관련해 .NET Framework에서 발생하는 문제를 해결합니다.




지금 바로 ComponentOne을 다운로드하여 직접 테스트해보세요!

c1.png

 
  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

그레이프시티 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그

그레이프시티 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@grapecity.com | 전화 : 1670-0583 | 경기도 안양시 동안구 시민대로 230, B-703(관양동, 아크로타워) 그레이프시티(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 Copyright ⓒ 2021 GrapeCity inc.