Approved! I have one quesetion. Is cacheobj.data.capture ever set to false?
Change 20080910-maxcarlson-p by [EMAIL PROTECTED] on 2008-09-10 18:31:55 PDT
in /Users/maxcarlson/openlaszlo/pagan-deities
for
<http://svn.openlaszlo.org/openlaszlo/branches/pagan-deities>http://svn.openlaszlo.org/openlaszlo/branches/pagan-deities
Add persistent CSS caching
Bugs Fixed: LPP-6938 - Improve CSS performance (partial)
Technical Reviewer: pkang
QA Reviewer: promanik
Details: Updated to only cache values the first time. Lee sent a
profile log that showed 372 calls after the cache had been run. I
added a flag when the cache is initialized. Then, values are only
cached the first time.
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]
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-p.tar>http://svn.openlaszlo.org/openlaszlo/patches/20080910-maxcarlson-p.tar