http://qs1969.pair.com?node_id=183845

Nitrox has asked for the wisdom of the Perl Monks concerning the following question:

I have a perl script that is lauched by another script via Win32::Process. (so it can run detached; a.k.a no console window). Within the running script I have certain points where it sleeps for a short bit.

My question is; is there a difference between using sleep(1); or Win32::Sleep(1000)? Do both "hand-off" the time-slices while sleeping?

-Nitrox

Replies are listed 'Best First'.
Re: sleep() VS Win32::sleep()
by svad (Pilgrim) on Jul 21, 2002 at 18:45 UTC
    yes, they both "hand-off" time-slices, AFAIK.

    Win32::Sleep just gives you better granuality, and, for certain, takes away portability. Time::HiRes is much more portable in this.

Re: sleep() VS Win32::sleep()
by BrowserUk (Patriarch) on Jul 21, 2002 at 19:01 UTC

    Fairly safe to say that they both 'hand off' the cpu for the duration. The benchmark as run proves little else of course. I'll leave comparing their efficiency/accuracy AAEFTR.

    #! perl -w use strict; use Win32; use Benchmark; timethese ( 100, { 'Win32' => ' sleep 1', 'Std' => ' Win32::Sleep 1000' , } ); __DATA__ # output C:\test>183845 Benchmark: timing 100 iterations of Std, Win32... Std: 100 wallclock secs ( 0.00 usr + 0.00 sys = 0.00 CPU) (warning: too few iterations for a reliable count) Win32: 100 wallclock secs ( 0.00 usr + 0.00 sys = 0.00 CPU) (warning: too few iterations for a reliable count)

    A quick 'deco' at the task manager whilst either sleep is in 'progress' shows that they are fairly obviously doing 'nothing'! :^)