Improve sleep resolution (#12049)

# Description
This improves the resolution of the sleep commands by simply not
clamping to the default 100ms ctrl+c signal checking loop if the
passed-in duration is shorter.

# User-Facing Changes
You can use smaller values in sleep.

```
# Before
timeit { 0..100 | each { |row| print $row; sleep 10ms; } } # +10sec

# After
timeit { 0..100 | each { |row| print $row; sleep 10ms; } } # +1sec
```

It still depends on the internal behavior of thread::sleep and the OS
timers. In windows it doesn't seem to go much lower than 15 or 10ms, or
0 if you asked for that.

# After Submitting
Sleep didn't have anything documenting its minimum value, so this should
be more in line with its standard procedure. It will still never sleep
for less time than allocated.

Did you know `sleep` can take multiple durations, and it'll add them up?
I didn't
This commit is contained in:
Doru 2024-03-02 17:03:56 -03:00 committed by GitHub
parent 4cda183103
commit 669659f974
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -56,7 +56,7 @@ impl Command for Sleep {
let ctrlc_ref = &engine_state.ctrlc.clone();
let start = Instant::now();
loop {
thread::sleep(CTRL_C_CHECK_INTERVAL);
thread::sleep(CTRL_C_CHECK_INTERVAL.min(total_dur));
if start.elapsed() >= total_dur {
break;
}