Community
Participate
Working Groups
After switching to JSON protocol, the time the client needs for creating new widgets increased about 2-20% depending on widget and browser. This is most likely due to the additional code within the Widget-Adapters that handle tasks that were done by the server before (e.g. replacing certain characters for strings). To counter this, there are some tweaks that could be done: - Cache references to widgets and rwt-types in Processor.js and/or ObjectManager.js - Replace cases of setAppearance with new init value, as this triggers some unnecessary calculation. - Fixing Bug 360674 - remove instances of qx.core.Variant.isSet (either replace them with Variant.select, with Client.isXXX, or remove them completely) - introduce an alternative for Target#createDispatchEvent for cases where the actual event object is not needed (creating object en masse can cost some time) - check if the number of calls to Widget.js#disableScrolling, Widget.js#prepareEnhancedBorder, VML.js#setFillGradient or VML.js#_copyData can be reduced. - refactor Tree/Table to improve perforamnce for this widget specifically - dispose qooxdoo objects asynchronously (after the changes are rendered)
Important note: The 2 to 20% are relative to the time needed to process the message itself, NOT including the actual rendering, which makes 50% or more of the entire process.
Refactored Processor.js to minimize lookups in ObjectManager.js. Changes are in CVS HEAD.
Sadly, setAppearance can not be easily replaced or refactored to prevent unnecessary calculation, because some code relies on this to be done immideatly. While this could be fixed, i'm not feeling that it is too risky and not worth the effort.
Removed all occurrences of "qx.core.Variant.isSet( 'qx.debug', 'on' )" and of qx.core.Settings, including Settings.js in CVS HEAD.
Replaced all instances of "qx.core.Variant.isSet( "qx.client", .." in CVS HEAD. The instances of Variant.isSet then remain i would rather not touch right now.
Introduced Target.js#dispatchSimpleEvent to CVS HEAD. This does not create a qooxdoo event object, and is used by Widget.js ("appear", "create", "insertDom") and TreeItem.js ("update").
Calls to prepareEnhancedBorder have been optimized to be done before any elements or properties have to be copied, reducing the number of DOM-accesses (non CSS3 browser only). Changes are in CVS HEAD.