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

  • From: "bokel" <actionscript@xxxxxxxxxxxx>
  • To: <ascoders@xxxxxxxxxxxxx>
  • Date: Sat, 19 Apr 2003 18:59:57 +0200

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

Other related posts: