Bremst "ZeigeAchsen" (showAxes) Applets?
In einem Applet werden komplexe parametrisierte Kurven berechnet und angezeigt: das ist zeitaufwendig - Ladezeit, Rechenzeit.
Die Kurven hängen ab von wenigen Daten: Punkte/Geraden und/oder Slider. Damit nicht jede Änderung das Applet verzögert, werden die Daten als "dummies" bewegt. Erst ein Schalter "neu berechnen" setzt die Original-Daten, womit die Berechnung der Kurven neu beginnt.
Das funktioniert gut, solange der Skriptbefehl "ZeigeAchsen"(showAxes) nicht ausgelöst wurde.
Danach aber sind auch die "dummies" blokiert(!) und das Applet ist stark gebremst!
In speedtest ist dasselbe Applet oben mit selbsterzeugten Koordinatenachsen und Punkten, unten mit "zeigeAchsen": zum Test! (längere Ladezeiten wegen der parametrisierten Kurven!)
Andere Beispiele: Kreisbüschel wurzeln (eigenes KOS)
und Kreisbüschel wurzeln 2 (mit "ZeigeAchsen")
In Bewunderung für geogebra grüßt W.F.
Ich denke es liegt am Umschalten der Sichtbarkeit der Achsen durch einen Skript-Befehl und nicht an daran ob die Achsen sichtbar sind oder nicht.
Begründbare Vermutung: Sobald "ShowAxes()" das erste mal ausgeführt wird, dann ist onUpdate für einige oder alle Objekte immer erfüllt, was genau soviel Performance benötigt als ob man ohne den Button "neu berechnen" (und ohne dummies) arbeiten würde. (Der alte Zustand, ohne die neuen dummies wird unnötigerweise neu berechnet.)
Dabei haben keinen Einfluss
Es handelt sich meiner Ansicht nach eindeutig um einen Bug (GGB5 und GGB6).
Das Einzige was funktioniert ist die Verwendung der Style-Bar (Hintergrund, Achsen)
Die einzige Umgehungslösung hast Du bereits gefunden: den Befehl nicht anwenden.
Allenfalls könnte man die zeitkritischen Listen im Skript abhandeln
SetzeWert(<freie liste>, KopiereFreiesObjekt(Zip(.......)))
Dies setzt die Definition von "<freie liste>={}" voraus und dass in der Initialphase der Skript aufgerufen wird. Abhängige Objekte müssten mit einen undefinierten Zustand von <freie liste> umgehen können. Diese Umgehungslösung könnte recht aufwändig werden. Da ist das Erstellen einer eigenen Achse massiv einfacher und auch in der Performance erheblich besser.
------------------
Falls meine Vermutung zutrifft, so handelt es sich (ebenfalls vermutlich) insofern um einen kritischen Fehler, als er ein sehr komplexes Gebiet betrifft, bei dem man, ohne viel GGB-KnowHow und Sorgfalt, eher 2 neue Fehler einbaut als einen behebt.
Nachtrag: der Skriptbefehl "ZeigeGitter" hat wohl dieselbe Bremswirkung.
W.F.
Comments have been locked on this page!