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