PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie schnell werden Abfragen im 2k3 verarbeitet?



TwoFace
13.05.2013, 03:29
Angenommen ich hab an die 50+ Conditional Branches in einem Common-Event, die alle abfragen ob bestimmte Switches ON oder OFF sind und/oder bestimmte Variablen einen bestimmten Wert haben und im "if"-Fall werden Werte von andere Variablen zu neuen Variablen addiert und im "then"-Fall subtrahiert etc. Keine Texte, keine Pictures, gar nix. Nur Variablen und Switches in sehr langen Ketten. Keine Unterbrechung durch Waits. Wie lange dauert es exakt, bis der Maker eine solche Eventpage einmal runtergerattert hat? Verarbeitet der Maker eine solche Abfrage in einem Common-Event genauso schnell wie 50 oder mehr in einem Event hintereinander? Kann man einen solchen, sehr langen Common-Event auf einer Map mehrfach hintereinander mit 0.1-Waits callen, ohne dass sich die Vorgänge überschneiden?

Corti
13.05.2013, 10:25
Folgendes verstehe ich nicht:

Kann man einen solchen, sehr langen Common-Event auf einer Map mehrfach hintereinander mit 0.1-Waits callen, ohne dass sich die Vorgänge überschneiden?
Wie kann sich etwas überschneiden, wenn du es hintereinander aufrufst?

Wenn in deinem Eventcode steht

Call CE(0001)
Wait 0.1
Call CE(0001)
Wait 0.1
Call CE(0001)
Wait 0.1
Dann wird das CE aufgerufen, komplett durchlaufen, dann kommt das Wait. Diese CEs können sich nicht überschneiden.
Das komplett durchlaufen bezieht sich auf das Event. Es kann sehr gut sein, dass der Maker dies nicht alles in einem Frame schafft oder zwischenzeitlich zu anderen Events wechselt, die als PP laufen.

Mal angenommen, du hast Parallel Processes, die gleichzeitig laufen. Wenn du in beiden das CE aufrufst kannst du selbstverständlich nicht sicher sein, dass die sich nicht überschneiden. CEs sind nicht wiedereintrittsfähig. Entweder du verriegelst es, oder das Ergebnis ist fehlerträchtig. Die Frage nach dem "Schnell genug" erübrigt sich.

TwoFace
13.05.2013, 12:36
Wenn in deinem Eventcode steht

Call CE(0001)
Wait 0.1
Call CE(0001)
Wait 0.1
Call CE(0001)
Wait 0.1
Dann wird das CE aufgerufen, komplett durchlaufen, dann kommt das Wait. Diese CEs können sich nicht überschneiden.

Genau das wollt ich wissen. Danke. Aber...


Es kann sehr gut sein, dass der Maker dies nicht alles in einem Frame schafft oder zwischenzeitlich zu anderen Events wechselt, die als PP laufen.

... kannst du mir diese Aussage bitte nochmal erklären? Mir fällts grad schwer mit dem Begriff "Frame" in dem Zusammenhang was anzufangen.

MajinSonic
13.05.2013, 12:46
Der Maker rechnet bei den Events immer von ID 1 zu 9999 durch. Und das ist ein ganz wichtiger punkt, was ggf. das zufällige eintreten von PPs betrifft, vorallem, wenn du so wild mit Variablen rumrechnest.

LG
MajinSonic

MagicMaker
13.05.2013, 12:59
Mir fällts grad schwer mit dem Begriff "Frame" in dem Zusammenhang was anzufangen.
Das ist ein kurzer Moment, der vergeht, bis dir der Bildschirm wieder was Neues anzeigt, pro Sekunde
passiert das 60mal. Siehe auch Bildfrequenz (http://de.wikipedia.org/wiki/Bildfrequenz).

Zwischen diesen Frames müssen intern alle Dinge hintereinander abgearbeitet werden, die bis zum
nächsten Anzeigemoment fertig sein müssen. Das schafft Makerchen auch üblicherweise, nur wenn
man Loops verwendet, geht der ziemlich schnell in die Knie, was etwas schade ist.

Was die CEs betrifft, es wäre viel einfacher, mit denen zu arbeiten, wenn andere Events ihren Code
wie ein Vampir (oder ein Funktionsaufruf) in sich aufsaugen könnten, damit sie sich nicht gegenseitig
blockieren sondern gleichzeitig das gleiche CE nutzen können.

Corti
13.05.2013, 13:44
Nicht wiedereintrittsfähiger Code sollte entsprechend behandelt werden. Thema durch.