hohe CPU- und Speicherauslastung

  • Moin,

    ich habe, wie im Titel schon beschrieben, das Problem, dass mein Script eine sehr hohe CPU- und Speicherauslastung hervorruft, ich aber nicht weiß wieso. Am Anfang startet es mit 6 MB und schwankt zwischen 0 % und 2 % Prozessorauslastung... Mit der Zeit steigert es sich auf 120 MB und teilweise sogar 99 % CPU Auslastung...

    Hat jemand eine Idee, woran das liegen könnte?

    Hier ist der Code:

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_UseAnsi=y
    #AutoIt3Wrapper_Allow_Decompile=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

    [/autoit] [autoit][/autoit] [autoit]

    ; Includes
    #include <GUIConstants.au3>
    #include <IE.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;Settings
    Opt("TrayMenuMode",1)

    [/autoit] [autoit][/autoit] [autoit]

    $oIE = _IECreateEmbedded ()
    $gui = GUICreate("eBesucher Browser - by Steve", 620, 620, _
    (@DesktopWidth - 640) / 2, (@DesktopHeight - 580) / 2, _
    $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS)
    $GUIActiveX = GUICtrlCreateObj($oIE, 10, 10, 600, 600)

    [/autoit] [autoit][/autoit] [autoit]

    ;Traymenü
    TraySetClick("9")
    $tray_show = TrayCreateItem("Anzeigen")
    $tray_hide = TrayCreateItem("Verstecken")
    $tray_reload = TrayCreateItem("Neu laden...")
    $tray_exit = TrayCreateItem("Beenden")

    [/autoit] [autoit][/autoit] [autoit]

    $surflink = InputBox ("eBesucher Surflink", "Hier bitte den kompletten Surflink von eBesucher einfügen.", "http://www.ebesucher.de/autotausch.php?id=111134")

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW) ;Show GUI

    [/autoit] [autoit][/autoit] [autoit]

    _IENavigate ($oIE,$surflink)

    [/autoit] [autoit][/autoit] [autoit]

    ;Selection Loop
    While 1
    $msg = TrayGetMsg()
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _exity()
    EndSwitch

    Switch $msg
    Case $tray_exit
    _exity()
    Case $tray_hide
    _hide()
    Case $tray_show
    _show()
    Case $tray_reload
    _reload()
    EndSwitch
    sleep(1)
    Wend

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Funktionen
    Func _hide()
    GUISetState(@SW_HIDE,$gui)
    GUISetState(@SW_DISABLE,$gui)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _show()
    GUISetState(@SW_SHOW,$gui)
    GUISetState(@SW_ENABLE,$gui)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _reload()
    _IEAction ($oIE,"refresh")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _exity()
    exit
    EndFunc

    [/autoit]

    gruß

    • Offizieller Beitrag

    Hallo

    Der folgende DLLCall entleert den RAMSpeicher der datei:

    [autoit]

    DllCall($dll, 'int', 'EmptyWorkingSet', 'long', -1)

    [/autoit]

    Ein Sleep solltest du eigentlich nicht brauchen, da GUIGetMsg() schon automatisch das macht, dass er wenig CPU Last verbrauchen darf.
    Zunot benutze doch einfach OnEventMode.

    Mfg Spider

  • Und was für ne "$dll" soll ich da angeben?

    gruß

    PS: Der Befehl muss dann in die While Schleife vom Message Loop oder?

    • Offizieller Beitrag

    Die Funktion ist aus der Psapi.dll

    [autoit]

    DllCall("Psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)

    [/autoit]
  • Am Anfang startet es mit 6 MB und schwankt zwischen 0 % und 2 % Prozessorauslastung... Mit der Zeit steigert es sich auf 120 MB und teilweise sogar 99 % CPU Auslastung...

    Hat jemand eine Idee, woran das liegen könnte?


    gruß

    Ich denke der Grund für den Speicherverbrauch/zuwachs ist, dass die aufgerufenen Webpages im IE Cache landen. Da es auf der Seite um Autos geht, sind wohl auch 'ne Menge Bilder dabei. Dann kann der Speicher schon recht voll werden. Ist beim 'normalen' surfen ja auch so ...

    Du solltest so eine Art Cachebegrenzer einbauen ...


    Gruß
    Greenhorn