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

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

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

Other related posts: