Approved!
Change 20080910-maxcarlson-z by [EMAIL PROTECTED] on 2008-09-10 09:40:12 PDT
in /Users/maxcarlson/openlaszlo/pagan-deities
for
<http://svn.openlaszlo.org/openlaszlo/branches/pagan-deities>http://svn.openlaszlo.org/openlaszlo/branches/pagan-deities
Summary: Add persistent CSS caching
Bugs Fixed: LPP-6938 - Improve CSS performance (partial)
Technical Reviewer: ptw
QA Reviewer: promanik
Details: I wanted to get this cleaned up and sent out. It reduces
the number of __LZapplyStyleMap() calls from 115 to 8(!), and the
startup time by 830ms with no regressions. I'm curious if this
works with the webtop codebase.
LzSprite.as - Add csscache capability, set to true. Add
getCSSCache() method that returns a cache, automatically
invalidating if the app fingerprint changes, indicating it was
recompiled or changed.
LzSprite.js,LzSprite.lzs - Add csscache capability, set to false
LzNode.lzs - If csscache capability is true, store and restore CSS
application results using the persistent cache.
LaszloCanvas.lzs - Document and store canvas.builddate property from
CanvasCompiler.java. If csscache capability is true, store the
cache in canvas.__LZcsscache property.
CanvasCompiler.java - Set canvas.builddate to the date/time when the
application is built.
Tests:
<http://localhost:8080/pagan-deities/test/style/metasuite.lzx>http://localhost:8080/pagan-deities/test/style/metasuite.lzx
runs as before. Note the first time is slower because it builds the
cache. Subsequent loads (without recompilation) should start up
fater. Validate the profiler results by rebuilding the LFC,
profiling
<http://localhost:8080/pagan-deities/test/style/metasuite.lzx?lzr=swf7&profile=true&lzt=html>http://localhost:8080/pagan-deities/test/style/metasuite.lzx?lzr=swf7&profile=true&lzt=html
. Save the profiler results, then refresh the app and run again and
you should see the hotspot go away:
Before:
% cumulative self calls self total
name index
time seconds seconds ms/call ms/call
8.0% 0.27 0.27 1 271.34 276.64
LzSprite.prototype.getCSSCache [27]
5.9% 0.47 0.20 131 1.53 2.34
LzCSSStyle.getRulesCache [21]
4.3% 0.62 0.15 337 0.43 4.72 <node>/
<node> [6]
3.8% 0.75 0.13 338 0.38 1.17 <node>/
__LZapplyArgs [17]
2.5% 0.83 0.09 233 0.37 0.37
LzTextSprite.prototype.getTextfieldHeight [61]
2.3% 0.91 0.08 1000 0.08 0.20 LzDelegate/
register [34]
2.2% 0.99 0.07 293 0.25 0.39
LzTextSprite.prototype.setWidth [47]
2.1% 1.06 0.07 1155 0.06 0.10
Class.addProperty [49]
2.0% 1.13 0.07 2043 0.03 0.03 Instance/
AddProperty [78]
1.9% 1.19 0.06 2265 0.03 0.03
LzCSSStyle.__compareSpecificity [85]
1.7% 1.25 0.06 56 1.04 12.92 <node>/
__LZcallInit [10]
...
0.0% 3.40 0.00 1 0.01 0.01
LzCSSStyleDeclaration [812]
After:
% cumulative self calls self total
name index
time seconds seconds ms/call ms/call
4.9% 0.13 0.13 337 0.37 3.64 <node>/
<node> [6]
4.8% 0.25 0.12 338 0.37 1.09 <node>/
__LZapplyArgs [16]
3.2% 0.33 0.08 299 0.28 0.73 <view>/
construct [25]
3.2% 0.41 0.08 233 0.35 0.35
LzTextSprite.prototype.getTextfieldHeight [50]
2.8% 0.49 0.07 1155 0.06 0.10
Class.addProperty [41]
2.7% 0.55 0.07 2043 0.03 0.03 Instance/
AddProperty [59]
2.4% 0.62 0.06 1000 0.06 0.17 LzDelegate/
register [31]
2.1% 0.67 0.05 636 0.08 0.10 LzEvent/
LzEvent [64]
1.9% 0.72 0.05 56 0.89 10.03 <node>/
__LZcallInit [11]
1.7% 0.76 0.04 318 0.14 1.11 <node>/
applyConstraint [17]
1.6% 0.80 0.04 211 0.19 0.56
LzSprite.prototype.setResource [40]
...
0.0% 2.57 0.00 1 0.01 0.01
LzCSSStyleDeclaration [815]
How does this change impact webtop?
Files:
M WEB-INF/lps/lfc/kernel/swf/LzSprite.as
M WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js
M WEB-INF/lps/lfc/kernel/swf9/LzSprite.lzs
M WEB-INF/lps/lfc/core/LzNode.lzs
M WEB-INF/lps/lfc/views/LaszloCanvas.lzs
M WEB-INF/lps/server/src/org/openlaszlo/compiler/
CanvasCompiler.java
Changeset:
<http://svn.openlaszlo.org/openlaszlo/patches/20080910-maxcarlson-z.tar>http://svn.openlaszlo.org/openlaszlo/patches/20080910-maxcarlson-z.tar