본문 바로가기

반응형

C#

(91)
IEnumerable 리스트를 Linq를 사용 안 하고 빠르게 List로 변환하는 방법 행이 몇만개 되는 IEnumerable 리스트를 List로 변환해야 한 적이 있었다. 처음에는 Linq의 ToList 메소드를 그대로 사용했더니 정말 오래걸렸다,, 그래서 Linq의 ToList 메소드를 사용 안 하고 List로 변환하는 다른 방안을 찾기 시작했다,, 찾은 결과 임의의 ConcurrentBag 리스트를 이용하니 속도가 빨라진 것을 체감할 수 있었다. 아래는 테스트 코드~.~ var concurrentBagList = new ConcurrentBag(); Parallel.ForEach(totalCodes, new ParallelOptions { MaxDegreeOfParallelism = Convert.ToInt32(Math.Ceiling((System.Environment.Processo..
P/Invoke(Platform Invoke) C# .Net에서 Native DLL(Unmanaged DLL)에 있는 함수를 호출하는 것을 Platform Invoke 혹은 줄여서 P/Invoke라 부른다. 예를 들어, C#에서 Windows 운영체제의 Win32 API를 호출한다거나, 기존 C/C++로 작성된 Native DLL의 함수를 호출할 필요가 있을 때, P/Invoke 방식을 사용한다. P/Invoke를 사용하기 위해서는 1. 먼저 DLLImplrt를 사용하여 어떤 DLL에서 함수를 가져올지를 지정하고, 2. 해당 함수의 원형을 C# 메서드 원형으로 정의해 준다. 3. 이때 C# 메서드는 statice extern으로 지정한다. +Win32에 있는 함수들을 C# 메서드 원형으로 변환하기 위해서는 pinvoke.net 사이트를 이용하면 편리..
Hashtable, Dictionary 목적 1. List 형태의 인덱스 대신 객체를 Key 값으로 등록 후 사용 2. Key 값을 기준으로 등록함으로 Value값의 검색이 간편함 3. Key 값의 경우 중복 불가 Hashtable과 Dictionary의 차이점 - Hashtable은 선언 시 Key와 Value의 Data Type을 정의하지 않지만 Dictionary은 선언 시 Data Type을 정의해줘야 한다. → Hashtable의 경우 여러 가지 Data형을 넣어서 사용할 수 있지만 Data Type 관련해서 코드를 신경 써줘야 한다. → Dictionary의 경우 Data Type을 지정하기 때문에 맞는 Type만 입력 가능하지만 안정적이라는 장점이 있다. [참고] https://cwkcw.tistory.com/121

반응형