PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Die Grenzen der While und For Schleife


Vienna
12.07.2008, 12:46
Ich habe die While- und For-Schleifen getestet. Im Anhang findet ihr die Testmission.


While Schleife:

Das Skript wird vom System bei 16.700.000 Durchläufen abgebrochen. ArmA läuft problemlos weiter.

Es wird kein Sleep (!!!) für eine Pause benötigt und der Spielablauf ist dadurch nicht gestört.

Wenn diese maximale Anzahl von Durchläufen erreicht werden würde, ist der Sleep Befehl einzubinden!! Bei Sleep 0.01 (eine kürzere Zeit wird vom System nicht erreicht) würde die While Schleife 45 Stunden lauffähig sein.


For Schleife:

ArmA bleibt bei 16.700.000 Durchläufen "stecken" und muß neu gestartet werden. Sleep wird benötigt und der Spielablauf ist immer bis zur Pause behindert.

pspsps91
12.07.2008, 18:17
mal nur so theoretisch, hast du auch getestet, wie oft sowas abläuft?

schleife.sqf
_count=_this select 0;
hint format["Durchlauf: %1",_count];
_nul=[_count+1] execVM "schleife.sqf";

Vienna
12.07.2008, 19:29
Habe ich nicht. Aber da das Skript nach einem Durchlauf beendet wird sollte das nicht problematisch sein, falls zwischen jedem Aufruf die Kontrolle automatisch an das System übergeben wird.

Allerdings müßte man zum Zählen ein globale Variable nehmen und die Textausgabe nach einer größeren Anzahl von einem anderen Skript durchführen lassen, weil die Textausgabe den Durchlauf so verzögert, dass es Stunden dauern würde, um millionen Durchläufe zu testen.