반응형
DataTable 과 Dictionary 의 속도 차이
C#
한때 PDA 개발할 때 데이터 처리를 Compact SQL 로 했습니다.
PDA 는 성능이 좋지 않아서 뭐든 좀 느렸죠.
처음엔 DataTable.Select() 를 사용했습니다.
코드 예제 :
string expression = "Date = '1/31/1979' or OrderID = 2";
string sortOrder = "CompanyName ASC";
DataRow[] foundRows = table.Select(expression, sortOrder);
그런데 데이터가 3,000건 이상 되면 (PDA 에서) 너무 나 드리더군요.
그래서 찾아보던 중 Microsoft Docs 를 보니 관련된 글과 아래와 같은 표가 있더군요.
속도 차이가 어마어마 하네요.
그래서 PDA 프로그램 실행할 때 Load 이벤트에서 검색이 필요한 DataTable 을 Dictionary 로 생성했습니다. Loading.. 을 뿌려주면서.
최초 한번만 로딩 해주고, 프로그램 사용 도중에 해당 테이블이 변경되면 Dictionary 도 같이 변경해주었습니다.
그리고 검색은 Dictionary 로 했더니, 속도 향상이 어마어마 하게 나더군요.
PDA 기준으로 데이터 3000건 중 하나를 찾는데 5~10초 걸리던게 1초도 안걸립니다.
Dictionary 사용 예제
Dictionary 형은 여러가지로 할 수 있습니다.
Dictionary<string, int>
Dictionary<int, int>
Dictionary<string, double>
Dictionary<string, SomeCustomClass>
2019/01/14 - [C# 기술] - 폴더 모니터링. Directory Watcher
2019/01/19 - [C# 기술] - TextBox 숫자만 입력 ( Windows Form C# )
728x90
반응형
'C# 기술' 카테고리의 다른 글
C# Color 사용하기 (0) | 2019.01.20 |
---|---|
C# try catch finally 제대로 쓰기 (0) | 2019.01.20 |
TextBox 숫자만 입력 ( Windows Form C# ) (0) | 2019.01.19 |
폴더 모니터링. Directory Watcher (0) | 2019.01.14 |
log4net 사용법 ( Visual Studio Windows form ) C# (0) | 2019.01.11 |
댓글