Al usar Stopwatch.GetTimestamp() encontramos que si registra el valor de retorno y luego continúa llamándolo y comparándolo con el valor de retorno anterior, eventualmente pero impredeciblemente devolverá un valor menor que el original.¿Cuesta cronometrar Stopwatch.Getttamptamp? O retroceder?
¿Este comportamiento es esperado?
El propósito de hacer esto en el código de producción es tener un tiempo de sistema preciso de microsegundos.
La técnica implica llamar a DateTime.UtcNow y también llamar a Stopwatch.GetTimestamp() como originalUtcNow y originalTimestamp, respectivamente.
A partir de ese momento, la aplicación simplemente llama a Stopwatch.GetTimestamp() y utiliza Stopwatch.Frequency calcula la diferencia con la variable originalTimestamp y luego agrega esa diferencia a laUtcNow original.
Luego, Voila ... un DateTime de microsegundos eficiente y preciso.
Pero, encontramos que a veces el Stopwatch.GetTimestamp() devolverá un número menor.
Sucede muy raramente. Nuestro pensamiento es simplemente "reiniciar" cuando eso suceda y continuar.
SIN EMBARGO, nos hace dudar de la precisión de Stopwatch.GetTimestamp() o sospechamos que hay un error en la biblioteca .Net.
Si puede arrojar algo de luz sobre esto, por favor haga.
FYI, en función del valor actual de la marca de tiempo, la frecuencia y long.MaxValue, parece poco probable que se disipe durante nuestra vida a menos que sea un problema de hardware.
EDITAR: Ahora estamos calculando este valor "por hilo" y luego "pinchándolo" para ver si hay saltos entre los núcleos para restablecerlo.
¿Cómo se puede tener un "microsegundo" tiempo exacto del sistema "cuando' UtcNow' no es microsegundo exacto? Este número solo se puede usar para intervalos precisos de intervalos. – Groo
Lo siento. ¿Has leído mi explicación? Solo llama a UtcNow una vez al inicio de la aplicación. A partir de ese punto, utiliza el reloj del sistema y calcula la diferencia para obtener la hora actual. – Wayne
Cronómetro usa los temporizadores de alta resolución cuando tiene acceso a ellos o existen en la computadora. –