Sebastian Werner schrieb:
Dietrich Streifert schrieb:
Ah Ok!

But shouldn't fast properties also be added to qx.OO.setter?

It took me some time to find out that addFastProperty created setters and getters are not accesible through the qx.core.Object.set method.


Mhh, fast and cached properties are mainly used internally. I don't think we need to add them there. To used addFastProperty outside the qooxdoo classes is not a good idea in my opinion.

Do you rely on this?

Sebastian

The starting point for this investigations was a profile (with firebug 1.0beta) created of the startup of my application. The profile showed that the application spent the most time in the setters of properties (about 40%).

So I decided to move the additional properties which I added to qx.ui.core.Widget with addProperty to addFastProperty or to custom setters and getters.
I was surprised that none of both methods worked out of the box.

So my intention was to use the "leanest" implementation for adding properties with setters and getters.

BTW: I suppose that the performance when using qx.OO.setters was dramatically better for IE6. Because I did not find a big difference between this method and the string concatenation method in IE7 and FF2.


Sebastian Werner schrieb:
Hi Dietrich,

The reason why this is coded this way, is that it performs dramatically better. It omits a string concatenation for each setter and use the cached entry instead.

Better would be to add your custom properties also to this qx.OO.setter list.

Ciao,

Sebastian




Dietrich Streifert schrieb:
Hello List, Hello Sebastian (who is maybe deepest inside the object property implementation),

In my application I need to add some properties to the whole widget hierarchie (maybe bad style, but anyway). So I do the following:

qx.ui.core.Widget.prototype._x_path = null;
qx.ui.core.Widget.prototype.getXpath = function() {
  return this._x_path;
};
qx.ui.core.Widget.prototype.setXpath = function(value) {
  return this._x_path = value;
};

For setting this property (and a few other) properties I'm usualy calling the set method of the instance

widgetInstance.set({xpath:'bla', foo:'blu', bar:'blo'});

The definition of the set method is in qx.core.Object.prototype:

qx.Proto.set = function(propertyValues)
{
  if (typeof propertyValues !== "object") {
throw new Error("Please use a valid hash of property key-values pairs.");
  }

  for (var prop in propertyValues)
  {
    try
    {
      this[qx.OO.setter[prop]](propertyValues[prop]);
    }
    catch(ex)
    {
this.error("Setter of property " + prop + " returned with an error", ex);
    }
  }

  return this;
}

Because the method relies on the existence of the setter and getter in qx.OO.setter this fails as self defined setters and getters are nevver assigned to qx.OO.setter. This also seems to happen if we have a fast property added through addFastProperty. As a side effect FF 2.0 freezes on the massive exception fireing in the try catch block (at least for my application which has a big widget stack).

The solution would be to not rely on qx.OO.setter and to assemble the setter call through a string concatenation:

      this['set'+qx.lang.String.toFirstUp(prop)](propertyValues[prop]);

In this case all setters and getters are catched.

Maybe this can eliminate the setter hash completely?

Any Ideas on this?

Thank you.

Best regards.


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
--
Mit freundlichen Grüßen
Dietrich Streifert
Visionet GmbH


------------------------------------------------------------------------

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV


------------------------------------------------------------------------

_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

--
Mit freundlichen Grüßen
Dietrich Streifert
Visionet GmbH

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to