Beiträge von Mars

    Ist zwar offtopic, aber: Yeeeeah. Jemand anderes der Marcus mit C heißt <3 (jetzt sind wir schon 2 und können die Welt erobern)


    Zum Thema: Es kommt schwer darauf an, ob in den AGBs der Webseite automatisierungen verboten werden (Das ist bei eingien Spielen der Fall). Mach dich bitte zuerst in diese Richtung schlau und poste am besten den Link, dann können wir hier auch einen Blick darauf werfen. Wenn Automatisierungen erlaubt sind läufst du keine Gefahr Ärger zu bekommen und hier im Forum supporten wir auch nur "erlaubte" Automatisierungen (siehe Forenregeln).


    lg

    M

    ich hab schon verstanden dass das Sarkasmus war :D

    Man kann nicht unendlich lange tauchen (bzw. unendlich lange die Wirtschaft "anhalten", wobei sie ja ansich weiterläuft, nur eben "anders") und muss ab und zu auftauchen. Das Problem ist, dass man entweder 3 Min die Luft anhält, oder 2,5Min + 2Min + 1,5Min + 1Min + 0,5Min wenn man zwischendrin Luft holt. Und ich weiß nicht was da besser ist. Bin jedenfalls kein Fan davon dass einfache Sachen wie "Alle Einkaufswagen desinfizieren" oder ähnliches (zumindest bei mir vor Ort, wie es in anderen Gebieten aussieht weiß ich nicht) abgeschafft wurden, wobei das doch echt vergleichsweise wenig Aufwand ist einen Mitarbeiter mit einem Lappen auszurüsten. Selbst wenn es in 99% der Fälle nichts bringt weil keiner der Kunden Corona hat, irgend jemandem wurde damit das Leben gerettet und dieser Jemand ist echt froh dass der Einkaufswagen ihn nicht angesteckt hat.

    Also genaugenommen habe ich die Nachricht jetzt weitergegeben. Wo bleiben meine Pornovideos? Aviana, hörst du mich?

    Für 1000€ (wenn du sie mir gibst, nicht umgekehrt) kraule ich dir auch den Nacken (aber nur 1x. alles hat seinen Preis).

    Edit: ja eine Kamera habe ich auch nicht am PC und das Mikrofon ist physikalisch nicht verbunden wenn ich es nicht benutze. Wenn jemand das hacken kann und sich der Stecker von selbst verbindet gibts einen Nobelpreis für Telekinese (und 1Mio Dollar von der https://de.wikipedia.org/wiki/…di_Educational_Foundation)

    Es ist lächerlich, dass man seine Software als Programmierer in eine Whitelist eintragen lassen muss damit sie nicht gesperrt wird. Was genau "erkennt" denn ein Antivirenprogramm heutzutage? Es erkennt alles als Virus was nicht auf der Whitelist ist (also Hashsumme + Lookup = gesperrt weil unbekannt)?


    Ich schiebe inzwischen einen richtigen Hass auf Antivirenhersteller. Man schreibt für irgendwen ein Tool weil irgendwer unbedingt einen Viewer für auf der Festplatte liegende Binärdaten einer float16 Matrix braucht. Kein Problem, dauert nicht lange. Tool gebaut -> Tool verschickt -> Beim Empfänger wird das Internet deinstalliert, der Atombunker einsatzbereit gemacht, Klopapier gekauft und die Notstromversorgung mit roter Alarmleuchte + Sirene springt an.

    Wieso muss ICH Fehler ausbaden die zu einer Zeit passiert sind als ich 10 Jahre alt war und mit einer Trommel um den Weihnachtsbaum gerannt bin?


    Ich bin dafür, dass Leute die im DE Forum Poweruser sind (die werden ja durch die Community ernannt, sind also üblicherweise Leute die "in Ordnung" sind und teilweise auch als Informatiker/Programmierer arbeiten, also ein bisschen know how haben, ein paar Jahre dabei sind, usw.) am Code mitarbeiten dürfen. Wie es im EN Forum mit MVP's aussieht weiß ich nicht, da ich da zwar einen Acc habe aber nie aktiv bin.


    (Das ist jetzt Offtopic, aber im Prinzip musste ich das hier ergänzen weil es aktuell nur hier hinpasst)


    M

    Am Besten wäre Open Source :rock:

    Einfach den Code auf Github und ab gehts.

    Ein Lösungsansatz wäre sowas wie:
    EventsOff()
    Code der schnell laufen soll
    EventsOn()

    Es ist doch auch wahnsinn, dass man in JEDER ProgrammZEILE checkt ob der User auf X geklickt hat. Das sieht für mich nach 99% Overhead im Interpreter aus.

    Schätze auch, dass es ein XY Problem ist. Überlicherweise hat jedes Firefox Fenster eine eigene PID (die in AutoIt z.B. von Run() zurückgegeben wird), darüber lassen sich selbst Fenster mit gleichem Fensternamen vom gleichen Programm dennoch unterscheiden.


    Mir ist aber unklar was es bringt 4 Stoppuhren dauerhaft laufen zu haben und nach je 5 Minuten die Seiten neu zu laden :D


    Edit: Jetzt sehe ich erst, dass Musashi der Grammatik und Fragestellungskorrektschreibungskönig ist :rock:


    lg

    M

    Mir hat es auch keine Ruhe gelassen, aber ich habe keine Lust auf externe Tools gehabt :D

    Das liefert sowas hier:

    Ist leider nicht ganz zuverlässig, da AutoIt manchmal "anhaltende" Ruckler die nur bestimmte Funktionen Betreffen (Ich schiele auf Sqrt(5) und Timerdiff(0)), sodass hier manchmal etwas schief läuft. Das übliche "ruckeln" habe ich versucht durch Medianbildung herauszufiltern. In den (Ergebnis)Mittelwert fließt jeweils nur der mittlere Wert von drei (Einzel)Werten ein (Spikes sollten somit abgefangen werden).


    Was man aber ganz klar erkennt: Es ist komplett egal WAS AutoIt ausführt, alles wird Pi mal Daumen um konstante 600ns verzögert. Bei "schnellen" Features macht das natürlich viel aus. Ich hatte ja gehofft eine Quantisierung in der Verlangsamung zu finden (Funktion 1 wird z.B. 2x Elementarverlangsamung langsamer, Funktion 2 wird nur 1x Elementarverlangsamung langsamer, usw. Aber im Endeffekt haben alle den gleichen Wert ;()

    Nun, was gewinnen wir an Wissen daraus? Ich bin mir nicht ganz sicher, wie das Ergebnis zu deuten ist. Den ersten Durchlauf hätte ich so gedeutet, dass die "Bremse" AutoIt-Intern sein muss, da kein WinAPI-Aufruf signifikant länger dauert. Und mit AutoIt-Intern meine ich, dass weder eine WinAPI-Funktion langsamer ausgeführt wird als vorher, noch eine WinAPI-Funktion öfter aufgerufen wird als vorher.


    Aber was ich mit dem Ergebnis des zweiten Durchgangs anfangen soll, weiß ich selber noch nicht so ganz...

    Das Problem ist auch, dass ja auch bereits uralte Exe.Dateien langsamer geworden sind. Ich habe z.B. mal mein uraltes Spiel MicroTD ausgepackt, dort habe ich praktischerweise ja eine Framerate/Auslastungsanzeige drin. Das Spiel läuft heute (10 Jahre später) via AutoIt3.exe genauso "flüssig" (also Auslastungsanzeige @60FPS zeigt gleichen Auslastungswert), wie wenn ich die 10 Jahre alte Exe starte. An der Exe hat sich mit 100% Sicherheit nichts geändert. Kann mir nur vorstellen, dass AutoIt intern irgendwelche Schalter (errorchecks, oder ähnliches) hat (diese typischen "should never occur" errors die man zwar im Programm abfängt, aber weiß dass sie niemals auftreten, weshalb man das Errorhandling "so lala" implementiert) die erst seit kurzen von Windows umgelegt werden.

    PS: Deine Ausführungen sind wundervoll :thumbup:

    Ja Windows denkt bei jeder in AutoIt geschriebenen Exe, dass es ein Virus ist (ist bei mir genauso), allerdings glaube ich nicht, dass Windows absichtlich irgendwelche Skripte ausbremst. Im Prinzip läuft das Skript ja über die standard AutoIt3.exe und nicht als eigenständiges Programm. Da die AutoIt3.exe nicht vom Defender als Virus eingestuft wird, sollte sie zur Laufzeit auch nicht besonderst stark von ihm beeinflusst werden.


    Edit: Falls jemand Vergleichswerte mit GDI+ will:

    Scheint als würde nur der AutoIt-Teil langsamer werden. Ich komme da auf ca. 70% mit MsgBox + EventMode. Für ein Skript in dem GDI+ den Großteil der Zeit läuft ist also leider kein Faktor 7 drin wenn man die GUI auslagert...


    Mal schauen welche "Schalter" es in AutoIt noch gibt die wir alle nicht kannten.

    Habe mal was gebastelt. (ein Quick n Dirty Test einiger primitiver Funktionen wie Plus, Mal, Geteilt, usw)

    Gemessen wird die Zeit in µs pro Aufruf der Zeile. (Das ganze randomisiert damit keine Muster dazwischenfunken incl Abzug der Zeit für die "Leerfunktion"). Jede dieser Zeiten wird gewichtet und auf 1 normiert (auf MEINEM Computer, bei euch wird der Wert für "µs Gewichtet" vermutlich nicht immer ca. 1.0 sein. Das ist notwendig, damit die Ergebnisse am Ende vergleichbar sind. Stellt dazu in Zeile 4 einen Gewichtungsfaktor ein, sodass ihr beim ersten Bench() Aufruf ca. 1000 Punkte holt). Am Ende wird die Inverse des Mittelwerts mal 1000 als "Score" gewertet (zum schöneren Vergleich). Dieser ist Proportional zur Ausführgeschwindigkeit. (1000 = MEIN Computer, 500 = ein PC auf dem das Skript halb so schnell läuft).

    Einfach mal ausführen. Nach dem ersten Bench() wird ein ArrayDisplay geschaltet, dadurch ist das 2te Bench() (mit identischem Ablauf) wesentlich verlangsamt. Wie viel genau sich jede Funktion verlangsamt kann man im Array in Col 3 "µs Gewichtet" ablesen, wenn man zuvor einen Gewichtungsfaktor eingestellt hat sodass man im ersten Bench() aufruf ca. 1000 Punkte bekommt.


    Aber irgendetwas stimmt hier trotzdem nicht. Ich habe früher schon seeeehr oft versucht den "schnellst möglichen AutoIt Code" für irgendein Problem zu bekommen. Ein Geschwindigkeitsunterschied um den Faktor 7-8 wäre mir da sicherlich mal aufgefallen, zumal ich zum Debuggen oft ArrayDisplay nutze. Das kann doch nicht sein, dass das bis heute niemand gemerkt hat?! Meine Vermutung ist, dass es an Windows liegt. Irgendein Sicherheitslückenschließungsupdate das aus unerfindlichen Gründen exakt die Schnittstelle von AutoIt zu Windows trifft, sodass AutoIt davon maximal betroffen ist während andere "nur" 10% an Geschwindigkeit einbüßen. Die alternative wäre, dass es an AutoIt liegt, aber an der Exe (und vorallem an der BETA) hat sich seit Jahrzehnten nichts geändert und ich halte es für extrem unwahrwahrscheinlich, dass das ich das bis heute nicht mitgekriegt hätte wenn es schon immer so gewesen wäre.


    Ich habe mich tatsächlich auch nach ein paar Tagen hingesetzt und versucht etwas zusammenzubauen. Leider ist das nichts geworden weil ich einen Klotz im Kopf hatte. Dachte ich muss eine Struct erstellen und irgendeinen Weg finden ffmpeg zu sagen wohin es den Frame dekodieren soll (so nach dem Motto: Hier hast du eine Adresse, schreib!). Std und CMDlines sind für mich ein Buch mit sieben Siegeln (dicht gefolgt von RegEx). Ich bedanke mich vielmals, dass du das Problem für mich gelöst hast. :part:

    lg

    M

    Ich glaube das Dict ist ohnehin schneller (habe es nicht ausprobiert). Falls es intern mit einem Hashtable arbeitet sollte die Zugriffszeit nahe O(1) sein und viel mehr als das ist nicht drin (nur eine Vermutung) :)

    Ein Vorteil der ArrayBinSearch + Regex ist, dass man so z.B. auch Schreibfehler/TeilMatches gut abarbeiten kann (hier ist ein Hashtable aufgeschmissen, da ein Schreibfehler idr zu einem völlig unterschiedlichen Hashwert führt), da das hier aber nicht gebraucht wird ist es wahrscheinlich Wurst welche Variante du im Endeffekt verwendest. Aber die Methode ansich kannst du dir merken, villeicht braucht man sowas ja später mal ;)


    M

    Die Info im Installer ist vermutlich schon 10 Jahre alt und von daher kann man sie getrost ignorieren. Solange du die Software nur auf Computern einsetzt die neuer als 10 Jahre sind (und damit meistens 64Bit haben) ist es egal welche Version du verwendest.


    Edit: Wie Chip im Folgekommentar anmerkt stimmt das nicht immer. Habe persönlich aber noch nie Probleme gehabt was mich zum Schreiben dieses Kommentars verleitet hat.