0
일부 실험을 실행하고 타이밍을 비교하여 최상의 "알고리즘"을 찾습니다. 문제는 병렬로 작업을 실행하면 실험의 상대 실행 시간이 잘못되고 순차적으로 실행하여 더 많은 결과를 얻을 수있는 경우입니다. C에서 작업 병렬 라이브러리를 사용하는 병렬 작업 타이밍
public static void RunExperient(IEnumerable<Action> experiments)
{
Parallel.ForEach(experiments, experiment =>
{
var sw = Stopwatch.StartNew(); //line 1
experiment(); //line 2
sw.Stop(); //line 3
Console.WriteLine(@"Time was {0}", sw.ElapsedMilliseconds);
});
}
내 질문
은 "무대 뒤에서"무슨 일이 일어나고 있는지에 대해 다음과 같습니다 : 작업이 시작, 그것은 가능한 OS이다 여기에 코드 (간체) 버전입니다 또는 프레임 워크는 실행 중에 작업을 일시 중지하고 나중에 실험의 실행 시간을 완전히 잘못 만들 수 있습니다.
순차적으로 실험을 실행하여 더 많은 결과를 얻을 수 있습니까?
실제로 이것은 보통 우선 순위 스레드에서 csrss.exe를 호출합니다. 우선 순위 반전 작업 :) – usr
물론, 나는 더 적절한 작업을 할 것입니다. 요점은 여전히 계속 나타납니다 –
하지만 다른 작업이 전혀 시작되지 않는다는 것을 의미합니까? 이것은 문제가되지 않습니다. 그 이후로는 타이밍이 더 이상 시작되지 않을 것입니다. 한 태스크가 이미 시작된 상태에서 다른 태스크가 인계되면 문제가 발생합니다. 이 일이 일어날 수 있습니까? (당신의 대답에서 할 수있는 것 같지만, 그냥 확인하고 싶습니다) – BjartN