통합검색
· 마을서비스란?  · 포럼마을  · 일반마을  · 테마마을  · 마을랭킹  · 활동왕
· 덱스퍼트란?  · TECBOX   · PRSBOX   · 이용안내  
· DEXT제품군  · 솔루션베이  · S/W & ESD 컴포넌트
· 프로그램베이
· LiveSeminar  · LiveConference
Visual C++ 포럼마을 입니다.
  마을등급 Visual C++   이 마을은 포럼마을 입니다이 마을은 자유가입제 마을 입니다 마을소개 페이지로 이동 전입신청
마을촌장촌장 나성훈 주민 34043 since 2006-12-29
우리마을 공지사항
질문&답변
강좌&팁
자유게시판
자료실
앨범
개인게시판
마을 게시판
등록된 마을 게시판이
없습니다.
랑데브 게시판
칼럼 게시판
개발자 고충상담
Dev Talk
자유토론방
벼룩시장
재나미 우스개
구인/프로젝트 정보
사람인 채용 게시판
  고객지원 게시판
마이 데브피아
 나의 e-Money 내역
 활동왕 My Page
 스크랩한 게시글보기
 쪽지관리
 주소록관리

 자료실
 가상리스트 및 필터  | VC++ 일반 2016-11-03 오전 10:09:25
 crowback__  crowback__님께 메시지 보내기crowback__님을 내 주소록에 추가합니다.crowback__님의 개인게시판 가기 번호: 32386 추천:0  / 읽음:3,282

안녕하세요. 까막임돠.

고충란 글도 있고, 웹상에서 보이는 몇몇 글도 있고해서

리스트 컨트롤에 데이터를 대량으로 넣을 때의 속도 문제

해당 리스트에서 필요한 내용을 찾아서 볼 때의 속도 문제 등.. 등..

요런 부분에 대하여 간단하게 참고할 수 있는 자료를 올려 봅니다.

 

NTFS MFT를 읽어서, 로컬 컴퓨터의 파일 목록을 보여주는 단순 유틸입니다.

Everything 개념과 비슷한데, cashing 및 change notify 등은 구현되지 않아

실제로 써먹을 수는 없지만, 참고 자료 정도는 될거 같아 해당 예를 선택했습니다.

 

MFT 쪽 코드는 아래의 웹페이지 참고..

https://sourceforge.net/projects/ntfs-search/?source=typ_redirect

 

아래 그림은 실제 구동된 그림인데요, MFT 로딩 5초 정도 

가상 리스트에 사용되는 vector에 때려넣는데 0.2초 정도 나오더군요.

컴퓨터 성능에 따라 차이가 날 수 있습니다. 건수는 그림처럼 대략 80만건

- 코드 최적화나 별도 검색 알고리즘등은 전혀 사용되지 않았고

- 문자열 비교시 대소문자 구분을 처리해주는 zstristr 이라는 함수를

- 하나 사용합니다. strstr 대용 - 질럿님이 설계해주신 코드입니다. 

 

아래는 edit 에 필터 문자열을 치면 실시간으로 필터링을 해줍니다.

검출량에 따라 차이가 나지만 대략 0.1초 내외 입니다.

 

다이알로그 헤더에,

가상리스트용 벡터 하나 선언

필더용 BOOL 변수와 필터용 벡터하나 선언

MFT를 읽어서 저장하는 변수 하나 선언

다얄로그 리사이징을 위한 변수 선언

그리고 리스트 컨트롤 변수 선언

 

실제 구현 코드는 

초기 로딩을 위한 OnInitDialog 함수

리스트컨트롤의 데이터 디스플레이를 위한 OnLvnGetdispinfoList1 함수

글자 변경을 처리하는 OnEnChangeEdit1 함수

화면 리사이징을 위한 OnSize 함수

마지막으로 프로그램 종료시 사용되는 OnDestroy 정도 입니다.

모든 함수는 대략 50줄 이내 정도이고, MFT를 읽어오는 부분을 제외하고는

2~30줄 이내이니 코드 참조에 별다른 어려움은 없을거라 예상하지만 

문제 있으면 댓글로 남겨주세요.

 

마지막으로 가상리스트로 사용하려면 리스트 컨트롤의 속성을 

아래 그림처럼 바꿔주시는걸 잊지마세요.

 

PS. 문제 하나 생각해보기

가상 리스트용 벡터는 건들지 않고, 필터용 벡터 하나로 화면을 필터링했는데

만약 리스트를 정렬해야 한다면, 어떤방식을 사용하는게 빠를까요???

 

좋은 하루 되세요..

[코멘트] 좋음
2016-11-04 06:45
 win3200  win3200님께 메시지 보내기win3200님을 내 주소록에 추가합니다.win3200님의 개인게시판 가기 
네 좋은 하루 되세요
저장 취소
[코멘트] 좋음
2016-11-10 13:28
 exzextor@hotmail.com  exzextor@hotmail.com님께 메시지 보내기exzextor@hotmail.com님을 내 주소록에 추가합니다.exzextor@hotmail.com님의 개인게시판 가기 
제 개발PC에서 실행시키니 NTFS_SEARCH.cpp 파일의 379 라인에서 에러가 발생하네요.
data += sizeof(SEARCHFILEINFO) * disk->filesSize;
혹시나 싶어 * 를 + 로 했더니 다른곳에서... ^^;
everything을 워낙 애용해서 관심이 많이 가는 주제네요. 코드 감사합니다.
저장 취소
[코멘트] 좋음
2016-11-10 23:55
 crowback__  crowback__님께 메시지 보내기crowback__님을 내 주소록에 추가합니다.crowback__님의 개인게시판 가기 
해당 코드를 확인하여 보았는데요, 문법상 오류는 아닐테고, 런타임 에러일꺼라 예상합니다.
구동시킨 플렛폼이 어떻게 되나요?
현재 Windows Server 2003, 2008, 2012 정도에서만 테스트된 상태라 플렛폼 정보를 알려주시면
테스트 결과를 확인해보고 댓글을 남기도록 하겠습니다.
저장 취소
[코멘트] 좋음
2017-01-14 23:08
 leesa49  leesa49님께 메시지 보내기leesa49님을 내 주소록에 추가합니다.leesa49님의 개인게시판 가기 
리스트컨트롤에 대량 데이터라 관심이...
저장 취소
코멘트쓰기
  좋음   놀람   궁금   화남   슬픔   최고   침묵   시무룩   부끄럼   난감
* 코멘트는 500자 이내(띄어쓰기 포함)로 적어주세요.
목록 보기   지금 보고 계시는 글을 회원님의 my Mblog >> 스크랩에 넣어두고 다음에 바로 보실 수 있습니다.  
회사소개  |   개인정보취급방침  |  제휴문의  |   광고문의  |   E-Mail 무단수집거부  |   고객지원  |   이용안내  |   세금계산서
사업자등록번호 안내: 220-81-90008 / 통신판매업신고번호 제 2017-서울구로-0055호 / 대표: 홍영준, 서민호
08390, 서울시 구로구 디지털로32길 30, 1211호 / TEL. 02_6719_6200 / FAX. 02-6499-1910
Copyright ⓒ (주) 데브피아. All rights reserved.