Performance-Fragen

  • Hallo Gemeinde!

    mein Proggi ist eigentlich schon fertig, mal ein paar Performence-Fragen an die Äggsberden hier:

    a, wieviel Rechnerleistung kostet mich ein
    FileOpen
    FileClose
    (wenn das z.B. alle 5 Sekunden passiert) (Dienst soll in ein Log-file protokollieren)
    die Funktion _FileWriteLog wird ja wohl vergleichbar arbeiten (also Log-File öffnen und schließen)

    b, würde gerne mein Programm Teilen
    b1 Hauptpogramm was die Zeit überwacht, eine Netzwerkverbindung herstellt
    gesteuert über ein ini-file

    b2 eigenes EXE, was dann vom Netzwerk Daten auf einen Kommunikationsserver schiebt. (und noch kontrolliert, daß die Daten mindestens schon 20 Sekunden alt sind, damit mir nicht noch irgendeine Applikation auf dem Netzwerkserver dadrin "rumfummelt")


    Wegen Problemen mit angeblich geöffnenten Files (such ich schon 2 Tage dran, weiß nicht, was ich angeblich nicht schließe und wo ich die 64 offene Files-Grenze überschreite) hab ich das heute mal so realisiert und bild mir ein, es kostet weniger Rechnerleistung, als wenn ich die Arbeit vom Unterprogramm b2 in eine Funktion nach b1 baue.

    Hat noch den Vorteil, daß ich b2 als eigene EXE noch von anderen Applikationen starten kann.


    Hat jemand einen Debug-Tip zu meinem offenen Files-Problem???
    (mit FileMon von Sysinternals bin ich nicht weitergekommen und bei mir daheim auf einem Win2000-System hab ich das Problem auch nicht, tritt aber auf meiner Testmühle mit Windows 2003 Server in der Firma sporadisch auf.


    1000 Dank

    Gruss

    German
    PS: wie testet ihr die Performance von ner autoit-Applikation. (gemeint ist hier, wie stark der Rechner dadurch belastet ist, brauch keine Echtzeitverarbeitung, daß Teil soll kein Atomkraftwerk steuern)

    • Offizieller Beitrag

    Hallo!

    Wie testet man die Performance? Nun, man nimmt einfach einen Taskmanager, entweder den von Windows (Strg+Alt+Entf) oder noch besser den ProcessExplorer von SysInternals (https://autoit.de/www.sysinternals.com). Da schaut man einfach mal eien Weile den ANteil an Prozessorzeit an, den der Prozess braucht.

    @a: Alle 5 Sekunden ist das gar kein Problem, der Befehl ist direkt auf die WinAPI gemapped, denke ich, sodass das sehr zügig geht. Auch Leistung kostet es nicht viel. Was _FileWriteLog macht, kannst du in der entsprechenden UDF nachlesen, wird aber so sein, wie du sagst.

    @b:
    Es ist von der Performance her eigentlich immer besser, wenn alles in einer Exe steckt, weil die Hauptlast eigentlich schon von AutoIt selbst verursacht wird und nicht von den Funktionen. In deiner Lösung läuft AutoIt im HIntergrund doppelt...

    peethebee

  • Wegen dem FileOpen bzw. FileClose: Anscheinend arbeitet AutoIt da wirklich einen Tick zu langsam. Ich hab das selbst bei meinem Sokoban-Spielchen mitgekriegt, dass vor allem spätere Levels (so in den Ausmaßen 50x30) richtig "Blockweise" geladen wird. Hinterlege ich die erforderlichen Daten allerdings von vornherein in ein Array, gibt es beim Auslesen keine Performance-Probleme... Anscheinend ist AutoIt da wirklich einen Tick zu langsam.