Pured Posted September 17, 2017 Share Posted September 17, 2017 (edited) Consider the following two scenarios: While(1) Sleep(10) WEnd and While(1) Sleep(100000) WEnd How does Sleep() work for the above two cases? Do they both use the same amount of cpu time? I think the second scenario will check the time difference just as often as the first scenario, meaning the exact same amount of resources is spent in both scenarios. The only difference is that the second scenario waits longer before going to WEnd? Is that correct? Or is doing Sleep(100000) better than doing Sleep(10)? Extra question: Which is more computationally efficient if I want an infinite loop running in the background? The above question's answer or: While(1) WEnd Thank you in advance. Edited September 17, 2017 by Pured Link to comment Share on other sites More sharing options...
TheSaint Posted September 17, 2017 Share Posted September 17, 2017 (edited) I don't know enough about the inner workings of AutoIt etc to definitively answer your question, however let's make it clear. Sleep(10) which is a sleep of 10 milliseconds, does not equate to Sleep(100000) which is a sleep of 100,000 milliseconds, but I guess you are meaning repeating the Sleep(10) x 10,000 to match the 100,000. So your question would be - Is doing Sleep(100000) better than doing Sleep(10) 10,000 times? One answer of course, is that you really don't want to write out Sleep(10) the 10,000 times, so quite a saving can be made there, simply doing Sleep(100000). My memory of the Help file etc, recommends doing a Sleep of at least 10 milliseconds to not overtax your CPU. So that answers your last question, and if you apply logic to that, it probably answers your first question too. In other words, if the system is checking every 1 millisecond anyway, then it is hard to see any benefit in the 10 millisecond sleep as being less taxing on your CPU. I would wait for someone else here to give a definitive answer, but you can ponder on what I wrote until then. Edited September 17, 2017 by TheSaint Make sure brain is in gear before opening mouth! Remember, what is not said, can be just as important as what is said. Spoiler What is the Secret Key? Life is like a Donut If I put effort into communication, I expect you to read properly & fully, or just not comment. Ignoring those who try to divert conversation with irrelevancies. If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it. I'm only big and bad, to those who have an over-active imagination. I may have the Artistic Liesense to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage) Link to comment Share on other sites More sharing options...
Pured Posted September 17, 2017 Author Share Posted September 17, 2017 @TheSaint, Thanks for the response. I have read through that as well. The way I understood it was that a Sleep() under 10ms would be redundant as AutoIT itself checks for sleeps every 10ms. Also, the issue wasn't about writing out Sleep(10) X times. My assumption was that a Sleep(100) would do something like $sleepStart = TimeInit() While(($sleepStart - TimeDiff($sleepStart)) < 100) ;Do nothing... WEnd Link to comment Share on other sites More sharing options...
TheSaint Posted September 17, 2017 Share Posted September 17, 2017 Well, I suggest waiting for a definitive answer, and unless you are equating the Sleep(10) to Sleep(100000) in some way, it is not clear to me what you are asking in that regard, especially as I am not getting the sense of your While..Wend code .... you are doing Sleep for a specified amount of time, and nothing happens during that, so why not just use the total, as I see no benefit gained otherwise ... just a loss really, as other unnecessary queries/computations are occurring. Make sure brain is in gear before opening mouth! Remember, what is not said, can be just as important as what is said. Spoiler What is the Secret Key? Life is like a Donut If I put effort into communication, I expect you to read properly & fully, or just not comment. Ignoring those who try to divert conversation with irrelevancies. If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it. I'm only big and bad, to those who have an over-active imagination. I may have the Artistic Liesense to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage) Link to comment Share on other sites More sharing options...
Pured Posted September 17, 2017 Author Share Posted September 17, 2017 @TheSaint, The Sleep needs to know when the Sleep is finished before it continues through the rest of the script. That in itself requires queries (if I'm not mistaken). I guess we'll have to wait for that definitive answer. As for the Sleep(10) / Sleep(100000) thing, how I understand it, Sleep(100000) gets checked every 10ms, similar to a Sleep(10) or even Sleep(1). Therefore, the computation of the Sleep() may be greater than a While(1) loop, making Sleep(100000) worse than a looped Sleep(10) if not the same. Link to comment Share on other sites More sharing options...
TheDcoder Posted September 17, 2017 Share Posted September 17, 2017 Sleep(10000) should be less taxing on the CPU because if you use Sleep(10) in a while loop, AutoIt will have to check the loop every 10ms and thus consumes more resources. The Sleep function in AutoIt uses Window's Sleep function which I would guess is more optimized and does not check every millisecond. A little reading suggests that it uses the system ticks... I am not sure what that means by the way but it does look more promising. Albeit, the difference would be too subtle and shouldn't make any real difference in this age of computers . Use what you feel comfortable with, I personally prefer Sleep(10) EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion Link to comment Share on other sites More sharing options...
Pured Posted September 17, 2017 Author Share Posted September 17, 2017 @TheDcoder, I'm not too sure about the computation behind system ticks, but I get how they work. You say the difference shouldn't make a difference, which I agree for regular users (this was also mainly asked out of curiousity). However, I'm sure when I'm running 3 virtual machines, 2 games, a music player, youtube at 2x speed with multiple scripts which use Sleep() loops, it could make some difference. Link to comment Share on other sites More sharing options...
TheDcoder Posted September 17, 2017 Share Posted September 17, 2017 14 minutes ago, Pured said: However, I'm sure when I'm running 3 virtual machines, 2 games, a music player, youtube at 2x speed with multiple scripts which use Sleep() loops, it could make some difference. First off, why are you playing 2 games while watching a youtube at 2x? Seems like a good way to clog your brain Anyway, it still shouldn't make a large difference. If you really want efficiency, use Sleep(10000000000) instead of Sleep(10). EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion Link to comment Share on other sites More sharing options...
TheSaint Posted September 17, 2017 Share Posted September 17, 2017 I'm not surprised your PC needs more Sleep after doing all that lot at the same time. TheDcoder 1 Make sure brain is in gear before opening mouth! Remember, what is not said, can be just as important as what is said. Spoiler What is the Secret Key? Life is like a Donut If I put effort into communication, I expect you to read properly & fully, or just not comment. Ignoring those who try to divert conversation with irrelevancies. If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it. I'm only big and bad, to those who have an over-active imagination. I may have the Artistic Liesense to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now