Warum ist AutoIt so langsam?

  • warum ist eigentlich AutoIt so langsam. Ich meine, es kann doch nicht nur daran liegen, dass die Scripte per Interpreter ausgeführt werden.


    Doch, vor allem daran liegt es.

    Java läuft doch auch mit Interpreter und ist schon so schnell wie C++.


    Es ist meistens nicht ganz so schnell. Außerdem läuft Java nicht als reiner Interpreter. Es ist eine Mischung aus Interpreter und Compiler, da zuerst optimierter Java-Bytecode erstellt wird, der dann eben über die JAva-VM auf jedem System läuft.

    Wie viel mal schneller ist überhaupt C++ als AutoIt? 100x? ?(


    Keine Ahnung, kommt auch auf die verwendeten Funktionen und so an. das ganze DLL-zeug it jedenfalls deutlich langsamer.

    Und eine Interpretersorache kann unterschiedlich umgesetzt werden. Du kannst sie zum Beispiel Zeile für Zeile abarbeiten oder der Interpreter kann Codeabschnitte vorkompilieren und diese dann auf einmal ausführen, was dann meistens schneller ist. Wie das in AutoIt gelöst ist, kann ich jetzt nicht sagen und es gibt sicher noch ein paar andere Tricks zum Optimieren.

    • Offizieller Beitrag

    Hi,

    progandy hat schon ganz gute Punkte zusammengefasst :).
    Ein paar Punkte liefert Wikipedia noch:
    http://de.wikipedia.org/wiki/Compiler#….C3.BChrlich.29
    Von diese Optimierunegn macht AutoIt selbst vermutlich keine einzige. Nur "Elimination toten Programmcodes" und "Erkennung von unbenutzten Variablen" übernimmt der Obfuscator -- und die sind nicht sooo ergiebig. Das grundsätzliche Problem ist, dass der Code zeilenweise zerhackt werden muss. Versuch mal im Kopf die Regeln zusammenzusuchen, um eine If-Anweisung korrekt zu erkennen... Es gibt erst sicher "If", dann... moment, es kann vor If auch ein Leerzeichen stehen, oder zwei Leerzeichen, ein Tab und noch mal vier Leerzeichen?! dann musst du beliebig viele beliebig verschachtelte Boolesche Anweisungen auswerten, dabei evtl. Funktionen aufrufen, Parameter übergeben, Rückgabewerte einsetzen. Grundsätzlich Fehler abfangen... Dass das alles in wenigen, wenn nicht einer Millisekunden in AutoIt funktioniert, ist eine Leistung :).

    In C stecken Millionen Mannjahre an Optimierungen in den Compilern von Intel, Microsoft und Gnu, damit kann AutoIt nicht mithalten :).

    Johannes