Kompilierte EXE mit 3.3.10.2 reagiert sehr langsam

  • Hallo,

    ich habe ein Projekt, welches ich schon mit der AutoIt Version 3.3.8.1 erfolgreich kompiliert habe. Nun bin ich auf die neue Version (3.3.10.2) umgestiegen und seit dem ist mein Programm sehr langsam geworden. Beispiel: man klickt auf ein Menüpunkt und das Fenster öffnet sich ca. nach 3-4 Sekunden (Im Fenster sind lediglich Info-Daten der Firma). Könnte das mit irgendwelchen AutoIt-Wrapper-Parametern zu tun haben?

    Anbei noch meine AutoIt-Wrapper-Parameter:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #RequireAdmin
    #Region
    ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=favicon.ico
    #AutoIt3Wrapper_Outfile=MeineEXE.exe
    #AutoIt3Wrapper_Compression=4
    #AutoIt3Wrapper_UseUpx=y
    #AutoIt3Wrapper_Res_Description=ZYX
    #AutoIt3Wrapper_Res_Fileversion=1.XXX
    #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=p
    #AutoIt3Wrapper_Res_ProductVersion=1.0
    #AutoIt3Wrapper_Res_LegalCopyright=XYZ
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
    #AutoIt3Wrapper_Res_File_Add=Data\logo.gif,RT_RCDATA,logo
    #AutoIt3Wrapper_Res_File_Add=Data\logo1.gif,RT_RCDATA,logo1
    #AutoIt3Wrapper_Res_File_Add=Data\favicon.ico,RT_RCDATA,ico
    #AutoIt3Wrapper_Res_File_Add=Data\Rooms.txt,RT_RCDATA,rooms
    #AutoIt3Wrapper_Res_File_Add=Data\video.gif,RT_RCDATA,video
    #AutoIt3Wrapper_Res_File_Add=Data\all.css,RT_RCDATA,allcss
    #AutoIt3Wrapper_Res_File_Add=Data\book.gif,RT_RCDATA,book
    #AutoIt3Wrapper_Res_File_Add=XXX.exe,RT_RCDATA,XXX
    #AutoIt3Wrapper_Res_File_Add=XXX.exe,RT_RCDATA,XXX
    #AutoIt3Wrapper_Res_File_Add=Data\Tastenkuerzel.ini,RT_RCDATA,tasten
    #AutoIt3Wrapper_Run_Tidy=y#AutoIt3Wrapper_Run_Obfuscator=y
    #Obfuscator_Parameters=/cs=0 /cn=0 /cf=0 /cv=0 /sf=1 /sv=0
    #EndRegion
    ;**** Directives created by AutoIt3Wrapper_GUI ****

    [/autoit]

    :)

  • Hier:

    Spoiler anzeigen
    [autoit]


    Func Form6()
    $Form6 = GUICreate("Info", 300, 220)
    GUISetBkColor(0xffffff, $Form6)
    GUISetIcon(@ScriptDir & '\ZYXData\favicon.ico')
    GUICtrlCreatePic(@ScriptDir & "\ZYXData\logo.gif", 40, 10, 79, 32, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    GUICtrlCreateLabel("ZYX", 40, 50, 300)
    GUICtrlSetFont(-1, 10, 400, 0, "Calibri")
    GUICtrlCreateLabel("Version " & FileGetVersion(@ScriptFullPath), 40, 80, 300)
    GUICtrlSetFont(-1, 10, 400, 0, "Calibri")
    GUICtrlCreateLabel("Support: support@ZYX.com", 40, 110, 300)
    GUICtrlSetFont(-1, 10, 400, 0, "Calibri")
    GUICtrlCreateLabel("Telefon: + 49 - (0)700 00000", 40, 140, 300)
    GUICtrlSetFont(-1, 10, 400, 0, "Calibri")
    GUICtrlCreateLabel(Chr(169) & " Copyright ZYX " & @YEAR, 40, 170, 300)
    GUICtrlSetFont(-1, 10, 400, 0, "Calibri")
    GUISetState()

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

    While 1
    KeepAlive()
    Local $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    GUIDelete($Form6)
    ExitLoop
    EndSwitch
    WEnd
    EndFunc ;==>Form6

    [/autoit]

    :)

  • Wuerde da kein Problem sehen, aber was macht den diese "KeepAlive"-Funktion? Am besten postest du die auch noch.

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • KeepAlive():

    Spoiler anzeigen
    [autoit]


    Func KeepAlive()
    If TimerDiff($KeepAliveTimer) > 10000 Then
    Debug("Sending keep alive...")
    _Send($ip, "KeepAlive")
    _Recv_From_Server()
    $KeepAliveTimer = Null
    $KeepAliveTimer = TimerInit()
    EndIf
    EndFunc ;==>KeepAlive

    [/autoit]

    :)

  • Ehm .. Da auch die Funktionen, die du da verwendet hast, keine Standard-Funktionen ist, kann man nur raten. Am besten mal ganzes Skript posten. ;)
    Aber ich wuerde auf die _Recv_From_Server - Funktion tippen, da ich vermute, dass du in dieser Funktion was ueber TCP empfaengst, und das ganze in einer Schleife. Und das bremst natuerlich die Messageloop.

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Ja genau, ehm :):S
    Ganzes Script ist 6000 Zeilen lang ohne UDFs.
    KeepAlive mit ServerResponse funktioniert nun langsam. Zu diesem Erkenntnis bin ich schon gekommen. Mir wäre es lieber, wenn ich KeepAlive in ein Thread packen könnte :rolleyes:
    Deswegen muss ich KeepAlive in jede While-Schliefe von jedem Fenster reinpacken :wacko:
    Wenn jemand weiß, wie man es anders machen kann, wäre ich sehr froh...

    :)

  • Du könntest mit

    [autoit]

    Adlibregister("KeepAlive", 10000)

    [/autoit]

    die Function alle xxx sekunden ausführen lassen. Leider ist das aber auch nur im selben Thread also nur bedingt das was du wohl suchst.

  • Könntest auch die Keep_Alive in seperates Script packen. Da die Funktion ja eh nichts zurückliefert.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • ich habe ein Projekt, welches ich schon mit der AutoIt Version 3.3.8.1 erfolgreich kompiliert habe. Nun bin ich auf die neue Version (3.3.10.2) umgestiegen und seit dem ist mein Programm sehr langsam geworden.

    Da stellt sich mir die Frage wieso du umgestiegen bist. Das Programm schien ja auch vorher schon zu laufen, also kann es ja nicht an den Neuerungen der aktuellen Version liegen. (Edit Andy: "es" bezieht sich hierbei auf den Umstieg und nicht auf das Langsamerwerden des Programms) Somit wäre die einfachste Möglichkeit das Problem zu lösen wieder auf Version 3.3.8.1 zu wechseln.

    AutoIt Version (Prod): 3.3.14.2

    AutoIt Version (Beta): 3.3.9.5

    ausgewählte Skripte: Chatbot, komplexe Zahlen (UDF)

    Einmal editiert, zuletzt von James (7. April 2014 um 16:58)

  • Hi,

    Zitat

    Da stellt sich mir die Frage wieso du umgestiegen bist.

    Richtig, die erste Programmiererregel wurde verletzt: " Never change a running system!"
    Was nämlich garnicht stimmt ist:

    Zitat

    Das Programm schien ja auch vorher schon zu laufen, also kann es ja nicht an den Neuerungen der aktuellen Version liegen

    Falsch, es wird keine Stable-Version in der Geschichte von AutoIt gegeben haben, die größere Probleme gemacht hat!
    U.A. gibt es jetzt einige "Features" in den TCP-Funktionen, die nun auf funktionierende Timeouts reagieren. Sehr fein, wenn man das im "alten" Script nicht berücksichtigt hat, weil es das in der ursprünglichen Funktion garnicht gab, bzw. seitens DEV´s einfach unter den Tisch gekehrt hat...
    Ich habe etliche Scripte, die infolge dessen mit 3.3.10.ff nicht mehr funktionieren (und auch wg. anderer "Änderungen"), daher stellt sich mir die Frage, wieso jemandohne Zwang auf eine aktuelle Version "umsteigt"? ?(

  • Wie gesagt mach die Funktion in ein separates Script in einer Endlosschleife, welches einfach aus deine Hauptscript einmal zu beginn startest und am Ende beendest, dann wird dein Hauptscript davon nicht mehr beeinflusst.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.