[ascoders] Re: [ascoders]ASBroadcaster - Bug behoben - Performanz vorhanden

  • From: "Holger Kohnen" <h_kohnen@xxxxxx>
  • To: <ascoders@xxxxxxxxxxxxx>
  • Date: Sat, 19 Apr 2003 19:44:01 +0200

Stimmt schon, Programmierer sind halt schreibfaul,
die Idee klingt gut sogar sehr gut, kann grad nicht mehr
darüber nachdenken, das Gehirn streikt irgendwie,
morgen gehts hoffentlich wieder...:-)
grüße, Holger

> O ja, ich verstehe.
> Hättest du ja gleich dazu schreiben können,
> anstatt mich hier ins offene Messer laufen zu lassen :)
>
> Funktioniert die alte Broadcaster-Methode
> nicht, wenn man das _listeners-Array heimlich durch
> eine Kopie ersetzt und die remove-Methode
> auf dem Original arbeiten lässt ?
>
> mfg r.
>
>
>
> ----- Original Message -----
> From: "Holger Kohnen" <h_kohnen@xxxxxx>
> To: <ascoders@xxxxxxxxxxxxx>
> Sent: Saturday, April 19, 2003 7:22 PM
> Subject: [ascoders] Re: [ascoders]ASBroadcaster - Bug behoben - Performanz
vorhanden
>
>
> > Einspruch
> >
> > Die Idee war die alte broadcastMessage-Methode
> > aus Geschwindigkeitsgründen zu erhalten und das
> > macht sich auch positiv bemerkbar. Daher haben
> > wir auch nicht die _listener-Liste kopiert da wir
> > dann ja die broadcastMessage-Methode hätten über-
> > schreiben müssen.
> >
> > Der Boolean unterscheidet nicht zwischen zwei
> > Methoden, sondern zwischen Methode und Array-
> > pushen.
> >
> > Verunsicher einen doch nicht so, bokel....;-)
> >
> > mfg, Holger
> >
> > > Aha,
> > > je nach Status benutzt ihr also die oder die
> > > remove-Methode, und löscht erst nachher.
> > > Das ist clever, allerdings auch langsamer
> > > als die Liste vorher zu kopieren.
> > >
> > > Ausserdem würde ich keinen boolean dafür
> > > benutzen, sondern ie betroffenen Methoden
> > > direkt austauschen.
> > >
> > > mfg r.
> > >
> > >
> > > ----- Original Message -----
> > > From: "Holger Kohnen" <h_kohnen@xxxxxx>
> > > To: <ascoders@xxxxxxxxxxxxx>
> > > Sent: Saturday, April 19, 2003 6:20 PM
> > > Subject: [ascoders] [ascoders]ASBroadcaster - Bug behoben - Performanz
> > vorhanden
> > >
> > >
> > > > Hi Leute,
> > > >
> > > > das hat mir und Carsten Müller keine Ruhe gelassen,
> > > > wir haben jetzt ein interessantes Ergebniss:
> > > >
> > > > - On-broadcastMessage-Listener-Remove-Bug ist behoben.
> > > > - Die broadcastMessage-Geschwindigkeit ist identisch.
> > > > - Das Entfernen von Listenern beim senden geht über 40mal schneller.
> > > >
> > > > Testet das doch mal bitte, vielleicht sind wir ja auch
> > > > irgendwie blind...:-)
> > > >
> > > > Besonders dritte Punkt ist interessant, scheint wohl an
> > > > der internen Speicherwaltung zu liegen, so nach dem Motto -
> > > > wenn Flash monotonere Arbeiten macht kommt es so richtig
> > > > in fahrt.
> > > >
> > > > netten Gruß, Holger
> > > >
> > > >
> > > > <code>
> > > > o = ASBroadcaster;
> > > > o.oldAddListener = o.addListener;
> > > > o.oldRemoveListener = o.removeListener;
> > > > o.oldBroadcastMessage = o.broadcastMessage;
> > > > //
> > > > o.initialize = function (pObj) {
> > > >  pObj.oldAddListener = this.oldAddListener;
> > > >  pObj.oldRemoveListener = this.oldRemoveListener;
> > > >  pObj.oldBroadcastMessage = this.oldBroadcastMessage;
> > > >  pObj.addListener = this.addListener;
> > > >  pObj.removeListener = this.removeListener;
> > > >  pObj.broadcastMessage = this.broadcastMessage;
> > > >  pObj._listeners = new Array();
> > > >  pObj.__blnSending = false;
> > > >  pObj.__arrObjectsToRemove = new Array();
> > > > }
> > > > //
> > > > o.addListener = function (pObj) {
> > > >  var tmp = this._blnSending;
> > > >  this._blnSending = false;
> > > >  this.oldAddListener(pObj);
> > > >  this._blnSending = tmp;
> > > > }
> > > > //
> > > > o.removeListener = function (pObj) {
> > > >  if (this._blnSending == false)
> > > >   this.oldRemoveListener(pObj);
> > > >  else
> > > >   this._arrObjectsToRemove.push(pObj);
> > > > }
> > > > //
> > > > o.broadcastMessage = function () {
> > > >  this.__blnSending = true;
> > > >  this.oldBroadcastMessage.apply(this, arguments);
> > > >  this.__blnSending = false;
> > > >  var l = this.__arrObjectsToRemove.length;
> > > >  for (var i = 0; i < l; i++)
> > > >   this.oldRemoveListener(this._arrObjectsToRemove[i]);
> > > >  this._arrObjectsToRemove.splice(0);
> > > > }
> > > > </code>
> > > >
> > > > ------------------------------------------------------
> > > > Archiv   : //www.freelists.org/archives/ascoders/
> > > > Optionen : //www.freelists.org/list/ascoders
> > > > ------------------------------------------------------
> > > >
> > >
> > > ------------------------------------------------------
> > > Archiv   : //www.freelists.org/archives/ascoders/
> > > Optionen : //www.freelists.org/list/ascoders
> > > ------------------------------------------------------
> > >
> >
> > ------------------------------------------------------
> > Archiv   : //www.freelists.org/archives/ascoders/
> > Optionen : //www.freelists.org/list/ascoders
> > ------------------------------------------------------
> >
>
> ------------------------------------------------------
> Archiv   : //www.freelists.org/archives/ascoders/
> Optionen : //www.freelists.org/list/ascoders
> ------------------------------------------------------
>
>

------------------------------------------------------
Archiv   : //www.freelists.org/archives/ascoders/
Optionen : //www.freelists.org/list/ascoders
------------------------------------------------------

Other related posts: