I'm going to check this in so Fred can test it.

I'm pretty confident about it.  And with the improved speedtest that I created, 
is shows about a 40% reduction in the overhead of CSS bindings.

On 2011-03-04, at 07:25, P T Withington wrote:

> [This is an improved version of the change that has a better mechanism for 
> choosing tag-selector rules and further improves the performance.]
> 
> Change ptw-20110302-zEx by [email protected] on 2011-03-02 18:20:29 EST
>    in /Users/ptw/OpenLaszlo/trunk-devo
>    for http://svn.openlaszlo.org/openlaszlo/trunk
> 
> Summary: Improve CSS rule parsing
> 
> Bugs Fixed: LPP-9785 CSS Parser needs to break up parsing of large rule sets 
> (partial)
> 
> Technical Reviewer: [email protected] (pending)
> QA Reviewer: [email protected] (pending)
> 
> Overview:
>    Rethink how to partition rules into cohorts:  base on ability to
>    discriminate applicability quickly, not on specificity.  Remove
>    concat-ing of applicable rules (which is a big overhead in
>    time/space for large rule sets), replace with state machine that
>    examines rules for applicability and only concats when
>    applicable.  For tag selectors, each LZX class lists only the tags
>    that it is a subclass of, so that only applicable tag rules are
>    examined.
> 
> 
> Details:
>    huge.css:  Large CSS ruleset for testing
> 
>    speedtest.lzx:  Use huge.css, add many styled subviews for lookup
>    test.
> 
>    lfc/*:  Manually declare __LZCSSTagSelectors for the LFC classes
>    that define tags.
> 
>    LzCSSStyle: See overview.  Also: conditionalize debug printer,
>    replace StyleDependencies object with a closure, break out
>    [name=...] rules to their own cohort, use class tag information to
>    choose tag selectors, only call the compound rule evaluator when
>    the last selector completely matches.
> 
>    ClassModel:  Compute __LZCSSTagSelectors for all classes.
> 
>    StyleSheetCompiler:  Sort rules at compile time by specificity to
>    reduce runtime sorting overhead.
> 
> Tests:
>    smokecheck, style/metasuite
> 
> Files:
> A       test/style/constraints/huge.css
> M       test/style/constraints/speedtest.lzx
> M       WEB-INF/lps/lfc/services/LzCSSStyle.lzs
> M       WEB-INF/lps/lfc/core/LzNode.lzs
> M       WEB-INF/lps/lfc/views/LzInputText.lzs
> M       WEB-INF/lps/lfc/views/LzText.lzs
> M       WEB-INF/lps/lfc/views/LaszloView.lzs
> M       WEB-INF/lps/lfc/views/LaszloCanvas.lzs
> M       WEB-INF/lps/lfc/animators/LzAnimatorGroup.lzs
> M       WEB-INF/lps/lfc/animators/LaszloAnimation.lzs
> M       WEB-INF/lps/lfc/helpers/LzContextMenu.lzs
> M       WEB-INF/lps/lfc/helpers/LzState.lzs
> M       WEB-INF/lps/lfc/data/LzDatapointer.lzs
> M       WEB-INF/lps/lfc/data/LzDataset.lzs
> M       WEB-INF/lps/lfc/data/LzDatapath.lzs
> M       WEB-INF/lps/server/src/org/openlaszlo/compiler/StyleSheetCompiler.java
> M       WEB-INF/lps/server/src/org/openlaszlo/compiler/ClassModel.java
> 
> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/ptw-20110302-zEx.tar


Reply via email to