AutoIt 3.3.7.xx Beta verfügbar

  • Bei meinem Notebook dauern die 800'000 Einträge 24.5 Sekunden (Aktuell) und 26.2 Sekunden (Beta)

    OK. Die Beta ist langsamer, lassen wir das so stehen.

    Aber weshalb habe ich folgenden Effekt:
    Bei 100'000 Einträgen dauert es 620ms (aktuell)
    Bei 800'000 Einträgen dauert es aber nicht 8x so lange (also 4.96 Sekunden), sondern 24.5 Sekunden!

    Hier wäre ich froh, wenn ich eine Lösung fände, damit das Ganze eher Linear zunimmt....

    Gruss Veronesi

  • Das hängt mit der Struktur des Dictionarys zusammen.
    Ich weiß nicht genau wie diese intern implementiert sind denke mir aber das zur Hashberechnung eines Items die bereits vorliegende Hashtabelle verwendet werden muss.
    Wenn dem so ist steigt der Rechenaufwand für die Hashberechnung mit der Anzahl der Items an da die Hashtabelle ja wächst.
    Somit dauert das Hinzufügen bei den letzten Einträgen länger als bei den ersten - damit ist dann dein linearer Zusammenhang dahin.

    Wenn ich aber die ganze Zeit hier sehe wie du verzweifelt versuchst das letzte Quentchen Leistung aus AutoIt herausholen zu wollen wird es denke ich Zeit das du einfach mal weg von einer Programmiersprache gehst welche nie dazu gedacht war performante Programme zu schreiben hin zu einer Sprache die eher dafür gedacht ist.
    Selbst ByteCode-Interpretersprachen wie Python (welche kein bisschen schwieriger ist als AutoIt falls du davor Angst haben solltest...) sollten schon sehr schnell performantere Ergebnisse liefern.
    JAVA oder die .Net-Sprachen sind ebenfalls sehr nett zu programmieren und sollten dir schon deutlich bessere Ergebnisse liefern.

    Also: Schau mal über den Tellerrand - es lohnt sich wirklich.

  • Vielen Dank für diese Antwort!
    Unsere Entwickler programmieren sonst in Delphi und C++

    Aber für mich als "Hobby" war mir das bisher zu viel Aufwand um selbständig zu erlernen...
    Ich weiß nicht mal ob es von Delphi einen gratis Compiler gibt.

    Veronesi

  • Ich hab mir mal dein Beispiel genommen und in Python umgeschrieben :


    Für 1.000.000 Einträge benötigt AutoIt bei mir 63s (die letzte Final).
    Dieses Python-Skript hingegen 0.17s...
    Ich denke das könnte Anreiz genug für dich sein dein Vorhaben mal mit einer anderen Sprache zu probieren.
    Ein bisschen Eingewöhnung in die Syntax und Eigenheiten einer anderen Sprache braucht man natürlich immer aber wenn man wie du schon eine Programmiersprache beherrscht sind andere vergleichsweise einfach zu erlernen.

  • Gut beherrschen ist so eine Sache :)

    Aber die Syntax von Phyton scheint mir kompliziert.
    Soll ich da nicht gleich auf Delphi gehen?

    Wie wäre echt die Geschwindigkeit in Delphi und gibt es hier gratis Compiler?

    Danke!

  • Ok Den Geschwindigkeitsunterschied muss man aber auch etwas differenzierter anschauen.

    Im Beispiel wird einfach in einer Schleife das Objekt befüllt.
    In Wirklichkeit muss vor jedem Eintrag jedesmal vorher einige Daten vom Netzlaufwerk abgefragt werden. D.h. unter Umständen macht der Geschwindigkeits Nachteil von AutoIt nicht mehr so viel aus... Mal testen!

  • Als ich das letzte mal Delphi programmiert hatte war Delphi 6 die aktuelle Version... ;)
    Ich habe keine Ahnung davon und kann daher nichts zu sagen.
    Da es eine Compiler-Sprache ist muss man aber davon ausgehen das sie performanter als Python ist.

    Zum Thema Pythonsyntax = kompliziert: Kompliziert ist immer so eine Ansichtssache. Ich persönlich halte sie von allen Sprachen die ich bisher vor mir gehabt habe als die mit der verständlichsten und einfachsten Syntax relativ zum Funktionsumfang.
    Aber zum Beispiel zurückzukommen - was konkret findest du kompliziert?

    Aber halt nein sorry - ich spamme den Thread gerade voll - b2t
    Wenn sollten wir die Diskussion wohl woanders weiter führen denke ich.