Best Practice für Stoppuhr in Multi-Prozessor-Maschine?

Ich habe eine gute gefundenFrage Für die Messung der Funktionsleistung und die Antworten empfehlen die Verwendung der Stoppuhr wie folgt

Stopwatch sw = new Stopwatch();
sw.Start();
//DoWork
sw.Stop();
//take sw.Elapsed

Aber ist das gültig, wenn Sie unter Multi-Prozessor-Maschine laufen? Der Thread kann auf einen anderen Prozessor umgeschaltet werden, oder? Das gleiche sollte auch in Enviroment.TickCount sein. Wenn die Antwort Ja lautet, sollte ich meinen Code wie folgt in BeginThreadAffinity einbinden

Thread.BeginThreadAffinity();
Stopwatch sw = new Stopwatch();
sw.Start();
//DoWork
sw.Stop();
//take sw.Elapsed
Thread.EndThreadAffinity();

P.S

Die Umschaltung kann über die Thread-Ebene erfolgen, nicht nur über die Prozessor-Ebene, z. B. wenn die Funktion in einem anderen Thread ausgeführt wird, sodass das System sie auf einen anderen Prozessor umschalten kann. Ist die Stoppuhr in diesem Fall nach dieser Umschaltung gültig?

Ich verwende die Stoppuhr nicht nur zur Leistungsmessung, sondern auch zur Simulation der Timerfunktion mit Thread.Sleep (um Anrufüberschneidungen zu vermeiden)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage