이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 3240|회답: 2

[출처] PLINQ 병렬 쿼리를 이용한 .NET/C# 성능 최적화

[링크 복사]
게시됨 2024. 3. 2. 오후 5:30:49 | | | |
병렬 쿼리란 무엇인가요?

PLINQ 쿼리의 많은 측면은 비병렬 LINQ to Objects 쿼리와 유사합니다. 순차 LINQ 쿼리와 마찬가지로, PLINQ 쿼리는 메모리 내 IEnumerable 또는 IEnumerable 데이터 소스에 대해 연산을 수행<T>하고 실행을 연기합니다. 즉, 쿼리가 열거될 때까지 실행이 시작되지 않습니다. 주요 차이점은 PLINQ가 시스템 내 모든 프로세서를 최대한 활용하려고 한다는 점입니다. 이 방법은 데이터 소스를 조각들로 분할한 후, 각 조각마다 별도의 워커 스레드에서 여러 프로세서에 병렬 쿼리를 수행하는 것입니다. 많은 경우, 병렬 실행은 쿼리가 훨씬 빠르게 실행된다는 의미입니다.

병렬 실행을 통해 PLINQ는 특정 유형의 쿼리에 대해 이전 코드에 비해 성능을 크게 향상시킬 수 있으며, 종종 데이터 소스에 AsParallel 쿼리 연산을 추가하는 것만으로도 가능합니다. 하지만 병렬 처리는 자체적인 복잡성을 초래할 수 있으므로 모든 쿼리 연산이 PLINQ에서 더 빠르게 실행되는 것은 아닙니다. 사실, 병렬 처리는 일부 쿼리를 느리게 만들기도 합니다. 따라서 정렬과 같은 문제들이 병렬 쿼리에 어떤 영향을 미치는지 이해하는 것이 중요합니다. 자세한 내용은 PLINQ에서의 가속 이해를 참조하세요.

간단한 예시

컬렉션 내 10,000개의 데이터에 대한 코드는 다음과 같습니다:



PLINQ가 사용하는 기타 기능

1. AsSequential을 사용하면, 과정에서 병렬 쿼리를 사용하고 싶지 않다면, 이 기능을 사용해 순차 쿼리로 복원할 수 있습니다.


2. AsOrdered를 사용할 때, PLINQ가 병렬로 실행되기 때문에 결과가 순서가 맞지 않을 수 있으며, 이는 AsOrdered 메서드를 추가하여 쿼리할 수 있습니다.


3. WithDegreeOfParallelism을 사용하여 컴퓨터에서 병렬 CUP 수를 설정할 수 있습니다.


장면 주석

많은 경우 쿼리를 병렬화할 수 있지만, 병렬 쿼리를 설정하는 데 드는 오버헤드가 성능 향상을 상쇄할 수 있습니다.쿼리가 많은 계산을 수행하지 않거나 데이터 소스가 작을 경우, PLINQ 쿼리는 순차적인 LINQ to Objects 쿼리보다 느릴 수 있습니다。 Visual Studio Team Server의 병렬 성능 분석기를 사용해 다양한 쿼리의 성능을 비교하고, 처리 병목 현상을 찾으며, 쿼리가 병렬로 실행되는지 순차적으로 실행되는지 판단할 수 있습니다.

참조:하이퍼링크 로그인이 보입니다.





이전의:【실용 전투】OpenWrt 루시앱 플러그인 튜토리얼 설치
다음:SQL Server는 확장 이벤트를 사용하여 교착 상태를 추적합니다
 집주인| 게시됨 2024. 3. 20. 오후 10:29:27 |
HuairongChen 님이 2024-3-20 16:05에 게시함
저는 동기 병렬성을 가능하게 하기 위해 병렬을 사용해 성능을 두 배로 올렸지만, 데이터 병렬 처리 문제에도 주의를 기울여야 합니다...

아이템+=1을 넣었고; 더 명확한 대비를 위해 thread.sleep(100)으로 교체하세요
게시됨 2024. 3. 20. 오후 4:05:24 |


저는 동기식 병렬 처리를 가능하게 하기 위해 병렬을 사용해 성능을 두 배로 늘렸지만, 데이터 병렬 처리 문제에도 주의를 기울여야 합니다
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com