샘플공유 [FlexGrid Winforms] 가상 모드와 일반 모드 성능 비교
추천0 비추천 0
페이지 정보
작성자 GCK싸이먼 작성일 2023-10-27 18:37 조회 104회 댓글 0건본문
첨부파일
관련링크
데이터 가상화란 데이터를 한 번에 모든 데이터를 로드하는 대신 원격 소스에서 데이터를 점진적으로 로드하는 방식을 의미합니다.
일반 모드에서는 모든 데이터를 그리드에 로드하는 반면, 가상 모드에서는 사용자가 그리드를 스크롤할 때마다 필요한 데이터가 호출되는 방식입니다. 따라서 가상 모드에서는 대량의 데이터를 다룰 때 짧은 시간 내에 효율적으로 그리드에 데이터를 로드할 수 있습니다.
FlexGrid에 100만 개의 데이터를 사용하여 로드 시간을 가상 모드와 일반 모드를 Stopwatch로 측정한 데이터입니다.
(100만개의 데이터 기준 / Machine Spec에 따라 변동될 수 있음)
|
초기 로드 |
마지막 행 이동 |
가상모드 |
0초 362밀리초 |
0초 7밀리초 |
일반모드 |
6초 116밀리초 |
0초 6밀리초 |
가상 모드로 데이터를 바인딩 하는 방법은 첨부드리는 샘플 프로젝트와 아래의 샘플 코드를 참고해주시기 바랍니다.
우선 데이터에 따라 C1VirtualDataCollection 인터페이스를 구현하여 데이터에 맞게 GetPageAsync 메서드를 재정의 합니다.
public class VirtualModeCollectionView : C1VirtualDataCollection<Customer> { public int TotalCount { get; set; } = 1_000; protected override async Task<Tuple<int, IReadOnlyList<Customer>>> GetPageAsync(int pageIndex, int startingIndex, int count, IReadOnlyList<SortDescription> sortDescriptions = null, FilterExpression filterExpression = null, CancellationToken cancellationToken = default(CancellationToken)) { await Task.Delay(500, cancellationToken);//Simulates network traffic. return new Tuple<int, IReadOnlyList<Customer>>(TotalCount, Enumerable.Range(startingIndex, count).Select(i => new Customer(i)).ToList()); } }
이후, VirtualModeCollectionView의 인스턴스를 전달하여 C1DataCollectionBindingList 객체를 만들고 이를 그리드의 DataSource 속성에 할당하십시오.
private void Form1_Load(object sender, EventArgs e) { var collectionView = new VirtualModeCollectionView(); c1FlexGrid1.DataSource = new C1DataCollectionBindingList(collectionView); c1FlexGrid1.Visible = true; }
그러면 FlexGrid에 데이터 가상화를 적용하고 가상 데이터 컬렉션으로 채우실 수 있으실 겁니다.
추가로 궁금하신 사항은 Q&A 게시판에 문의를 남겨주시면 확인하여 안내드리겠습니다.
감사합니다.
그레이프시티 드림.
댓글목록
등록된 댓글이 없습니다.