nadie ha respondido la pregunta final … “¿por qué tengo malos tiempos de reloj?”
Los relojes en PC son una pesadilla completa,
Para empezar, el reloj estándar de PC en tiempo real tiene una precisión de 1 milisegundo como máximo, y ni siquiera puede garantizarlo, esto puede ocasionar disparidades extrañas, por ejemplo, cronometrar códigos muy rápidos y obtener muchos ceros y ocasionalmente 1 ms.
en segundo lugar, no hay certeza de que cada núcleo del procesador estará sincronizado, por lo que si tiene la suerte de obtener un código que compara los resultados en dos subprocesos diferentes, incluso puede hacer que el tiempo aparentemente retroceda.
- No puedo completar mis tareas sin la ayuda de un tutor pagado. ¿He entrado a un nivel demasiado alto?
- Si no tengo el número de Aadhaar, el recibo, ¿cómo puedo obtener una nueva tarjeta de Aadhar sin tener conocimiento de la perdida?
- Si heredé decenas de millones de dólares de mis padres, ¿qué materias específicas necesito aprender para administrar esta fortuna para asegurarme de que siga creciendo?
- He trabajado en el campo de relaciones públicas durante más de 4 años. Decido ir a estudiar para un MBA. ¿Qué tipo de MBA es mejor, un MBA general o uno centrado solo en la gestión de operaciones?
- Tengo 18 años. ¿Cuándo es demasiado tarde para intentar convertirse en violinista en una orquesta nacional? ¿Hay un límite de edad?
Además, el valor devuelto por el reloj aparentemente se limita al tiempo empleado en su código, por lo que si otro proceso intervino por un tiempo, obtendrá una respuesta más baja.
Finalmente, almacenar el tiempo en un flotador es solo pedir problemas, simplemente no es lo suficientemente preciso. Tanvir sugirió esto reescribiendo su código para usar dobles, pero no explicó por qué. Tenga en cuenta, en primer lugar, que dividirá los relojes por segundo. Esto depende de la implementación, pero supongamos que es un millón. El valor del reloj devuelto después de una hora sería de 3.600 millones, que ya está perdiendo precisión si se almacena en flotante. No creo que nadie use ciclos de reloj de CPU reales para esto, pero si lo hicieran, entonces la mayoría de las PC habrían perdido mucha precisión después de muy poco tiempo si el valor se hubiera almacenado en un flotante.
Idealmente, debe mantener los valores en su tipo nativo durante el mayor tiempo posible, ya que la diferencia entre dos valores del mismo tipo siempre será lo suficientemente pequeña como para almacenar en ese tipo. La división por relojes por segundo conservará la mayor precisión si convierte los valores en dobles justo antes de la división.