time_ms() retorna una marca de tiempo monotónica en milisegundos como int. Restar dos lecturas da una duración transcurrida. sleep(ms) suspende el hilo actual por la cantidad de milisegundos especificada.
// Timer y sleep: medir tiempo transcurrido con time_ms() y pausar con sleep() fn main() -> int { print("start") let t0: int = time_ms() // Pausar 500 milisegundos sleep(500) let t1: int = time_ms() let elapsed: int = t1 - t0 print("500ms passed") print("tiempo real: " + int_to_string(elapsed) + "ms") // Medir una operacion costosa let t2: int = time_ms() var suma: int = 0 var i: int = 0 while i < 1000000 { suma = suma + i i = i + 1 } let t3: int = time_ms() let dur: int = t3 - t2 print("suma de 0..1M = " + int_to_string(suma)) print("duracion loop: " + int_to_string(dur) + "ms") return 0 }
start 500ms passed tiempo real: 500ms suma de 0..1M = 499999500000 duracion loop: 0ms
Cómo funciona
time_ms() es un envoltorio liviano sobre el reloj del sistema, que retorna una marca de tiempo monotónica en milisegundos adecuada para medir duraciones. Tomar la diferencia t1 - t0 después de un sleep(500) debería producir un valor igual o apenas por encima de 500, dependiendo de la precisión del planificador del sistema operativo.
La segunda medición envuelve un loop ajustado que suma enteros de 0 a 999 999. El resultado — 499 999 500 000 — es la suma estándar de la serie aritmética n*(n-1)/2 para n = 1 000 000. La duración se redondea a cero porque LLVM optimiza el loop de forma agresiva al momento de generar código nativo.
Tanto time_ms como sleep son funciones integradas disponibles sin necesidad de ningún import. Están implementadas en el runtime y se mapean directamente a clock_gettime(CLOCK_MONOTONIC) y nanosleep en Linux.