Zurück   Flashforum > Flash > ActionScript > Softwarearchitektur und Entwurfsmuster

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 19-06-2003, 18:28   #1 (permalink)
[+]
 
Benutzerbild von André Michelle
 
Registriert seit: Dec 2002
Ort: cologne
Beiträge: 2.271
mystic with

hi,


ich suchte gerade nach Performance Beschleunigern
und dachte an with. Da ich damit noch nicht so oft
gearbeitet habe, wollte ich erst ein paar Tests fahren,
welche Gültigkeit was wo hat.

Dabei kam folgendes raus:
ActionScript:
  1. a = {};
  2.  
  3. with ( a ) {
  4. b = 9;
  5. }

CTRL+ALT+V zeigt, das b keine Eigenschaft von a wird.
Das funtioniert nur, wenn die Eigenschaft, bzw. Methode schon im Objekt selber vorhanden ist.

ActionScript:
  1. a = {};
  2. a.b = null;
  3. with ( a ) {
  4. b = 9;
  5. }

CTRL+ALT+V: b ist Eigenschaft von a. Super :o) Wusste ich vorher nicht...

Dazu kann man auch lokale Variablen packen, die wie in Funktionen unabhängig von den Objekteigenschaften sind:

ActionScript:
  1. a = {};
  2. a.b = 9;
  3. with ( a ) {
  4.     var b = 1;
  5.     b = b;
  6. }// a.b = 1;
  7.  

Nett ist das hier :o)

ActionScript:
  1. a = {};
  2. a.b = 9;
  3. with ( a ) {
  4.     var b = 1;
  5.     b += b;// addition
  6. }// a.b = 2 ??
  7.  


Vieleicht macht das schlauer und jemand hat noch ein paar Fälle.
with ist bei mir im Kopf noch nicht richtig rund gefressen...
__________________
aM

blog | laboratory | tonfall | processing

Audiotool.com
André Michelle ist offline   Mit Zitat antworten
Alt 19-06-2003, 19:07   #2 (permalink)
Flash-Wüstling
 
Benutzerbild von pheidrias
 
Registriert seit: Dec 2001
Ort: Halle/Saale
Beiträge: 4.300
ich habe with noch nie leider können und verzichte deswegen inzwischen grundlegend .

,
pheidrias
__________________
Ehrlich währt am LÄNGSTEN !
pheidrias ist offline   Mit Zitat antworten
Alt 19-06-2003, 19:11   #3 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Das mit var kommt mir komisch vor und siehe da, es wird einfach ignoriert:

ActionScript:
  1. a = {};
  2. a.b = 9;
  3. with ( a ) {
  4.         var b = 1;
  5. }
  6. trace(a.b)

ausgabe
1

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 19-06-2003, 19:20   #4 (permalink)
[+]
 
Benutzerbild von André Michelle
 
Registriert seit: Dec 2002
Ort: cologne
Beiträge: 2.271
auch süß :o)

Kurz die Performance Frage:

Ich habe gerade ein paar For Schelifen durchprobiert.

a = { b:9 };

Auslesen mit eval ca. 10 % schneller. Ist das wirklich immer so ?
Das gleiche mit SetProperty ?

Ich könnte jeden Performance Gewinn gebrauchen,
daher wäre ich bereit alles in Flash4 Code umzubügeln :o)
__________________
aM

blog | laboratory | tonfall | processing

Audiotool.com
André Michelle ist offline   Mit Zitat antworten
Alt 19-06-2003, 19:29   #5 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Das müsste ich auch erst testen. Die Pfade sind halt immer das Problem bei Flash, wobei ich auch schon mal festgestellt habe, dass manche Sachen ohne with schneller gehen, als mit. Es kommt halt immer auf den Einzelfall an und welcher Player gerade laeuft.

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 19-06-2003, 19:35   #6 (permalink)
[+]
 
Benutzerbild von André Michelle
 
Registriert seit: Dec 2002
Ort: cologne
Beiträge: 2.271
Ich meinte eher getProperty & Co.

Aber hast recht. Schlimm wird es, wenn die nächste Playerversion generell schneller wird, was die Punktsyntax angeht und get-SetProperty langsamer sein wird...

Ich wünschte, wir hätten ein wenig mehr Einblick, was da gekocht wird :o)
__________________
aM

blog | laboratory | tonfall | processing

Audiotool.com
André Michelle ist offline   Mit Zitat antworten
Alt 19-06-2003, 19:41   #7 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Ob eval, setProperty, with oder lokale Variabeln - es laeuft letztlich immer darauf hinaus, die Pfade kurz zu halten. Denn
jede Stufe in deinem Pfad ergibt eine oder zwei Anweisungen in Flasm. Eval/setProperty dagegen werten einen beliebig langen Pfad in einem Schritt aus.

Um genaueres zu erfahren, ist Flasm hilfreich. Den findest du bei flasm.sourceforge.net

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 19-06-2003, 19:46   #8 (permalink)
[+]
 
Benutzerbild von André Michelle
 
Registriert seit: Dec 2002
Ort: cologne
Beiträge: 2.271
Jep.

Ich habe auch nie Pfade, die länger als ein Objekt sind.
Sollte doch was dazwischen kommen, dann setze ich eine lokale Variable auf.

Aber wie gesagt, mein Speedtest zeigt mir,
dass auch schon a.b mit eval ( "a.b" ) um einiges schneller ist.

Nur 10%, aber das summiert sich...
__________________
aM

blog | laboratory | tonfall | processing

Audiotool.com
André Michelle ist offline   Mit Zitat antworten
Alt 21-06-2003, 21:08   #9 (permalink)
[Matthias K.] - Moderator
 
Benutzerbild von Madokan
 
Registriert seit: Jun 2001
Ort: Berlin/Germany - and the hole World !
Beiträge: 9.971
Moins - Andre um deine Frage zu beantworten - es ist seit Flash 5 so das die Flash 4 Zuweisungen set/getproperty schneller sind. Hab da schon bis zu 20% rausgeholt. Besonders zu empfehlen ist die call()-Methode - ist um einiges schneller als jeder onClipEvent(enterFrame) oder onEnterFrame-Aufruf!

Thomas Wagner hat da sehr schöne Beispiele zum Thema in den letzten beiden Flashforen Konferenz vorzuweisen gehabt!

Liebe Grüsse
Matze K.
Madokan ist offline   Mit Zitat antworten
Alt 21-06-2003, 23:28   #10 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Zitat:
Besonders zu empfehlen ist die call()-Methode - ist um einiges schneller als jeder onClipEvent(enterFrame) oder onEnterFrame-Aufruf!
Was leider nur ein Gerücht ist:
enterFrame oder Loop?

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 22-06-2003, 00:45   #11 (permalink)
[Matthias K.] - Moderator
 
Benutzerbild von Madokan
 
Registriert seit: Jun 2001
Ort: Berlin/Germany - and the hole World !
Beiträge: 9.971
Was die neuen Player Versionen 6,0,65,0 u. 6,0,79,0 bet. hab ich noch keinen Vergleich mit call() durchgeführt. Mag sein das die Jungs von MM daran optimierungen vorgenommen haben.

Was das Gerücht bet. kann keines sein, ich habs mit eigene Augen gesehen.

Beim 6,0,21,0 Player war call() wesentlich schneller als onEnterFrame - rund 20%. In Flash 5 hat der Thomas sogar noch mehr dadurch rausgeholt.

Mal schauen ich bin sicher auch dieses Jahr wird er uns auf der Konferenz sicher bereichern.

Liebe Grüsse
Matze K.
Madokan ist offline   Mit Zitat antworten
Alt 22-06-2003, 11:18   #12 (permalink)
[+]
 
Benutzerbild von André Michelle
 
Registriert seit: Dec 2002
Ort: cologne
Beiträge: 2.271
@Madonkan:

In Flash4 Zeiten war das auch nötig, denn dort konnte man keine 120 Fps einstellen :o)
Daher der Workaround mit dem Call Befehl.
(Ich hatte Herrn Wagner auch gesehen. Wirklich fein :o)

Ich suche generell nach Performance 'Uppern'.
Einige Tests haben mich eher verwirrt, als befriedigt:

Nach meinen Speedtests ist jeder(!) Zugriff auf Variablen, auch lokale oder eben auch ohne Pfad mit eval schneller.
Meist nur 5-10%, aber immerhin.

setProperty ist im Kontext mit 'this' langsamer als wenn ich aus einer Methode einen anderen MovieClip steuere.
Dann habe ich aber oft eine Beschleunigung von 10 -20%.

Da ich aber immer mit ASBroadcaster arbeite, kommt das nicht in Frage. Dort bin ich immer im Objekt, bzw. im MovieClip.
__________________
aM

blog | laboratory | tonfall | processing

Audiotool.com
André Michelle ist offline   Mit Zitat antworten
Alt 22-06-2003, 11:20   #13 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Zitat:
Geschrieben von Madokan
Was das Gerücht bet. kann keines sein, ich habs mit eigene Augen gesehen.

Beim 6,0,21,0 Player war call() wesentlich schneller als onEnterFrame - rund 20%. In Flash 5 hat der Thomas sogar noch mehr dadurch rausgeholt.
Ich habe jetzt extra nochmal Flash 5 ausgepackt und die Ergebnisse bleiben die gleichen. onClipEvent ist eindeutig schneller als ein Frameloop mit call. Ich denke, ihr seid einer kollektiven Bewusstseinstrübung zum Opfer gefallen

Der Test ist im Anhang.

mfg r.
Angehängte Dateien
Dateityp: zip perf_neu_f5.zip (2,6 KB, 9x aufgerufen)
bokel ist offline   Mit Zitat antworten
Alt 22-06-2003, 11:23   #14 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
@andre
Wenn es dir um 3d Performance geht, dann würde ich einfach mal mit Florian darüber sprechen, ob du seine Engine nicht lizensieren kannst. Es macht doch irgendwie keinen Sinn, das Rad 100 mal neu zu erfinden.

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 22-06-2003, 11:24   #15 (permalink)
[+]
 
Benutzerbild von André Michelle
 
Registriert seit: Dec 2002
Ort: cologne
Beiträge: 2.271
Zitat:
Ich denke ihr seid einer kollektiven Bewusstseinstrübung zum Opfer gefallen
Nein, nur Flash4 Workarounds und nur falsch verstanden :o)
__________________
aM

blog | laboratory | tonfall | processing

Audiotool.com
André Michelle ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 15:36 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele