Older Version Newer Version

Alyce Alyce Jun 17, 2011

=MINIMIZE CPU USAGE IN SCAN LOOP=
[[user:DennisMcK]]

It recently came to my attention that some LB programmers were avoiding scan loops because they use 100% of the processor. Scan loops are necessary if you use WM_Liberty.dll or almost anything else that uses LB callbacks. Although the 100% usage is true there's a simple way to cure this. An api call to Sleep is all that's needed. The following two programs were tested on a PII 400 that had 27 tasks running in the background along with Liberty BASIC. As the pictures show the program without the Sleep call used 100% of the processor while the program with the sleep call used only 1%. That 1% included all of the other running tasks too.

[[image:100.gif]]

[[code format="lb"]]
'-------- 100%
nomainwin
open "Use all of that cpu" for window as #1
#1 "trapclose [quit]"

[loop]
    scan
goto [loop]

[quit]
    close #1: end
[[code]]

[[image:1.gif]]

[[code format="lb"]]

'-------- 1%
nomainwin
open "Minimun cpu uasage" for window as #1
#1 "trapclose [quit]"

[loop]
    scan
    'sleep for 50 milliseconds
    calldll #kernel32,"Sleep",50 as ulong,r as void
goto [loop]

[quit]
    close #1: end
[[code]]