새로운 별도의 작업을 만들 때 LINQ 쿼리 .asparallel를 실행하는 데 걸리는, 나는 .AsParallel을 사용했다 : 그런 다음증가는 시간에 C#을 LINQ 쿼리에서
var completeReservationItems = from rBase in reservation.AsParallel()
join rRel in relationship.AsParallel() on rBase.GroupCode equals rRel.SourceGroupCode
join rTarget in reservation.AsParallel() on rRel.TargetCode equals rTarget.GroupCode
where rRel.ProgramCode == programCode && rBase.StartDate <= rTarget.StartDate && rBase.EndDate >= rTarget.EndDate
select new Object
{
//Initialize based on the query
};
, 나는 두 개의 별도의 작업을 생성했다있다 두 방식에 동일한리스트를 전달 병렬로 실행하는 것은 다음과 같이
Task getS1Status = Task.Factory.StartNew(
() =>
{
RunLinqQuery(params);
});
Task getS2Status = Task.Factory.StartNew(
() =>
{
RunLinqQuery(params);
});
Task.WaitAll(getS1Status, getS2Status);
I의 타이밍을 포착하고 다음 타이밍이었다고보고 놀랐다 하였다
- 위 시나리오 : 6 초 (6000 밀리 초)
- 같은 코드 대신이 작업을 순차적으로 실행 : 50 밀리
- 같은 코드를하지만, LINQ의 .AsParallel()하지 않고 : 50 밀리
위 시나리오에서 왜 이렇게 오래 걸리는지 이해하고 싶었습니다.
병렬이 더 빠르다는 것을 의미하지는 않습니다.parralelism을 사용하면 기본 작업이 빠르면 스레드 간의 컨텍스트 전환에 너무 많은 시간이 걸리기 때문에 작업 속도가 느려집니다. – tym32167
@ tym32167 합의했지만이 시나리오에서 스레드가 어떤 방식으로 생성되는지 알고 싶었습니다. 언급 한 시나리오 2와 3에서 여전히 병렬 작업이 될 것이기 때문에 더 빠릅니다. –