Microsoft MVP성태의 닷넷 이야기
C# 딕셔너리 생성에 대해 질문드립니다. [링크 복사], [링크+제목 복사]
조회: 8789
글쓴 사람
김이현
홈페이지
첨부 파일
 

안녕하세요. C#에서 딕셔너리를 만드는 데 모르는 점이 있어서 질문드립니다.

제가 만들고 싶은 건 문자열을 키로 가지고 리스트를 값으로 가지는 딕셔너리입니다.

아마 아래와 같이 정의할 수 있을 것 같은데요.

static Dictionary<string, List<String>> dic_list = new Dictionary<string, List<String>>();

질문1) 만약 이 dic_list 딕셔너리에 추가되는 문자열이 너무 길다면, 리스트 크기를 CLR 내부에서 조정해 주는 루틴이 실행되고, 퍼포먼스에 부하가 생기나요?

질문2) 추가되는 아이템의 수는 거의 한 리스트 당 대략 100만 개 정도이고,

만약 추가되는 아이템(문자열 200byte)의 길이를 알고 있을 때, 이 길이를 아래와 같이 미리 지정해 주면 성능에 이점이 있을까요?

static Dictionary<string, List<String>> dic_list = new Dictionary<string, List<String>>(200);

그리고 이 방법이 리스트 아이템의 수가 아니라, 추가될 문자열의 크기를 지정해 주는 게 맞나요?


궁극적으로는 실시간으로 전송되는 대량의 시계열 자료를 가능한한 부하없이 받아서 저장(append)하려는 것이 목적입니다.

https://stackoverflow.com/questions/169973/when-should-i-use-a-list-vs-a-linkedlist/29263914#29263914

이곳을 참고하면, 기본적으로 제공되는 자료 구조 중에서는 LIST가 가장 알맞을 것 같은데, 혹시 작가님께서는 다르게 조언해 주실 부분이 있으실까요?








[최초 등록일: ]
[최종 수정일: 5/3/2019]


비밀번호

댓글 작성자
 



2019-05-03 09시30분
1) 아래의 글을 보면,

C# - int []와 object []의 차이로 이해하는 제네릭의 필요성
; http://www.sysnet.pe.kr/2/0/11805

개별 문자열의 크기와 List의 크기는 관계가 없음을 알 수 있습니다.

2) Dictionary의 생성자에 지정한 200은 Dictionary의 요소 수를 확보하는 것일뿐 문자열의 크기와는 관련이 없습니다.

정성태

1  2  3  4  5  6  [7]  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5780임세1/3/20234398C# 프로그래밍 10 책 구매한 사람입니다. 3부 자료는 어디서 다운 받을 수 있나요? [4]
5779이건우1/2/20233266안녕하십니까 루프안에서 메세지처리에 관하여 질문드립니다! [2]
5778이건우12/30/20224518안녕하세요 c#에서 dll참조 관련 질문드립니다. [4]
5777감사합니...12/29/20223552UI Thread에 Invoke 처리관련 궁금합니다. [3]
5776pdf맨12/28/20223342C# MouseUp Event + pdf [10]
5775민성12/28/20223129안녕하세요 Class 관련해서 예외처리를 하나로 받아낼수 있는 방법 [1]
5774중급12/27/20223918중급개발자란 어느 수준인지요? [4]
5773김영식12/26/20223449c# 압축파일 읽어 올 때 BinaryRead 한글 처리 문제 [1]
5772눈송이12/26/20223582Excel VSTO 는 왜 Net Core, Net 5, 6 버전을 사용하지 않나요? [2]
5771김훈12/26/20223685c# .net client application 망분리(내부망,외부망) 환경에서 의문의 외부사이트 호출 대기 [2]
5770lsh12/26/20223292클라우디움안에 있는 파일을 File.Copy 하고싶은데 코드로는 접근을 못하나요? [1]
5769울타리12/20/20223330Active Directory 2012R2 2016 또는 2019 마이그렝션 문의 드립니다. [1]
5768c++12/14/20224081Thread를 사용한 C++ DLL에 관련된 질문입니다. [6]파일 다운로드2
5767민성12/9/20223427안녕하세요 ashx로 화일을 저장하고 화일명을 리턴하는데요 [1]
5766김명훈12/9/20223577웹브라우저에서 묻지 않고 바로 다운로드 [2]
5765hong12/1/20223812Winform(.Net6) 클라이언트에서 SignalR Core 웹서버에 접속시 인증서 문제 [3]파일 다운로드1
5764요한11/30/20224027c++ 동일한 객체인지 비교 방법문의 [2]
5763고필석11/30/20223541시작하자마자 비정상 종료하는 프로세스에 대한 문제 해결 조언 요청 드립니다. [3]
5762흰털너부리11/30/20223526wpf mvvm ui update 로딩중 표시 [1]
5761민성11/29/20223427죄송하지만 한가지만 더 여쭈어 보겠습니다 [1]
5760민성11/29/20223350안녕하세요 [2]
5759문정환11/28/20223695c# socket 통신할때 빅엔디언으로 바꿔줘야 하나요? [1]
5758라떼11/28/20224889Linux 에서 winform UI 어플리케이션 실행하기 [3]
5757흰털너부리11/25/20223840asp.net core EF AddDbContext,AddDbContextFactory 차이점 알려주세요 [1]
5756흰털너부리11/25/20223411asp.net core web api에서 json 특정 property 무시하는 방법 문의 드립니다. System.Text.Json 사용중입니다. [1]
5755문정환11/24/20223765싱글스레드 프로그램도 컨텍스트 스위칭이 생길 수 있나요? [4]
1  2  3  4  5  6  [7]  8  9  10  11  12  13  14  15  ...