몇 가지 일반적인 속성이있는 사용자 지정 클래스 목록을 반복하고 싶습니다. 좀 카운터를 입력해야하기 때문에 목록은 내가 아주 빠른 방법 및 특성을 확인에서 반복하는 방법에 대한 최선의 방법을 읽고있다속성을 기반으로 카운터를 반복하고 설정하는 빠른 방법
을 거대하고 성장하는 것은 (3000items로 시작하고 + 10,000에 도달 할 수 있습니다)됩니다.
In .NET, which loop runs faster, 'for' or 'foreach'?
http://www.codearsenal.net/2013/12/csharp-multithreading-loop-parallel-for.html#.U09-qPl_vA0
하지만 이러한 속성을 검사하는 로직을 수행해야하는 경우 ... 빨리 무엇을 할 것인가? 순간
내 코드는 다음과 같습니다
public void CalculateTotalCounters()
{
#region ParallelCounting
countTotal = 0;
countMapped = 0;
countNotMapped = 0;
countError = 0;
errorFound = false;
MyList.AsParallel().ForAll(acc =>
{
lock (this)
++countTotal;
if (!string.IsNullOrEmpty(acc.isMapped))
{
lock (this)
++countMapped;
}
if (string.IsNullOrEmpty(acc.isMapped))
{
lock (this)
++countNotMapped;
}
if (acc.HasError || acc.NotUnique || acc.DefalutName || acc.DefaultValue)
{
lock (this)
{
++countError;
errorFound = true;
}
}
});
#endregion
}
내가 isMapped위한 조건 두 가지가 하나 될 수있는 알고있는 경우 - 다른 사람 (이 잠금에 영향을 줄 수?)
감사합니다 .
는 당신에게 카운터의 잠금이 필요 확실 해요? – Codor
사용하지 않을 때 이상한 결과가 나타납니다. 잠금에 대한 내 문제와 가까운 대답을 찾지 못했습니다. – blfuentes
'잠그지 마십시오'. 인스턴스에서 잠글 수있는 항목이 무엇인지 알 수 없습니다. – Rawling