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

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

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
------------------------------------------------------

Other related posts: