script schneller durch 64bit compile?

  • moin moin,

    habe ein script, das im hauptteil
    mit einer for . to . next schleife
    und arrays je nach eingabe relativ grosse datenmengen handelt.

    auf meinem 8kern-cpu lastet es mit maximal 15%.

    jetzt die frage: kann man die last irgendwie höher schrauben damit es dafür schneller arbeitet?

    würde eine 64bit kompilierung auf 64bit.betriebssystem ein unterschied zur 32bit kompilierten exe ausmachen?

  • würde eine 64bit kompilierung auf 64bit.betriebssystem ein unterschied zur 32bit kompilierten exe ausmachen?

    Dazu gibt es keine eindeutige Antwort!
    Probiere es aus!

    auf meinem 8kern-cpu lastet es mit maximal 15%.

    Also volle Auslastung!
    Autoit ist von Haus aus nicht Multitasking/threading-fähig und nutzt nur einen Kern voll aus. Windows versucht also, die Last auf alle verfügbaren Kerne zu verteilen. Wenn du im Taskmanager beim Rechtsklick auf dein Programm im Kontextmenü auf "Zugehörigkeit festlegen" klickst, kannst du nur einen Kern für die Anwendung auswählen. Dann siehst du auch die Auslastung von 100%.
    Zeige dein Script, idR. optimiert man zuerst den Code um ggf. Zehner/Hunderterpotenzen an Geschwindigkeit zu erhalten, um erst danach die paar Prozent mit Hardwarespielereien rauszukitzeln!

    Profile deinen Code, um die Hotspots und den "inner Loop" zu finden. Das sind Programmteile/Funktionen, welche entweder die meiste Zeit verwenden, oder überwiegend ausgeführt werden.

    und arrays je nach eingabe relativ grosse datenmengen handelt.

    Es gibt Alternativen zu Arrays, welche wesentlich schneller abgearbeitet werden!
    Um das zu beurteilen, muss man den Code sehen.


    //EDIT

    i feed it with textfiles, it reads each line into array, then compare the lines, do some string operations. this all happens in a for.to.next loop.

    Naja, wenn du schon langsamen Code schreibst, brauchst du dich nicht zu wundern! Ein Einlesen von Text in ein Array ist was für Leute, die nicht programmieren können oder denen die Geschwindigkeit egal ist! Diese Funktion ist dafür gedacht, einige Handvoll Zeilen abzuwickeln!
    TEXT-Dateien bearbeitet man mit TEXT-Bearbeitungsfunktionen!
    So wie ich das sehe, ist letztendlich eine massive Geschwindigkeitssteigerung machbar, nur wenn du die richtigen Werkzeuge/funktionen benutzt!

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    3 Mal editiert, zuletzt von Andy (24. Juli 2015 um 06:36)

  • Hallo,

    bin unterwegs, werde aber asap (ca. 15 uhr) den scriptcode posten. da bin ich mal gespannt ob codemässig noch was herauszuholen ist.

    danke soweit für die Hinweise / Kritik.

  • habe jetzt unnötige sachen aus der for-schleife in ne art parallele timerfunktiom gepackt die ich vor der schleife anstosse und danach beende. nun beschränkt sich die for-schleife auf die benötigten durchläufe wenn ich alles mit allem vergleichen muss:

    $totalloops = 0
    for x = 1 to array[0] - 1
    $totalloops += 1
    next


    beispiele: bei eingelesenen 6 textzeilen wären das 15 durchläufe, bei 10 eingelesenen zeilen 45 durchläufe usw...

    für eingelesene 3.000 Zeilen sind es (2.999 + 2.998 + 2.997.... + 1) durchläufe und das geht in knapp 13 sekunden.

    damit kann ich nun gut leben :)

  • Eine vereinfachte Betrachtungsweise von Komplexität habe ich in AutoIt schonmal erklärt. Ob man da als Anfänger durchsteigt weiß ich leider nicht...
    Komplexität

    lg
    M