On 11/3/2008 9:20 AM, Hussein Shafie wrote:
> Andy Black wrote:
>> We've just learned that a large (540KB) XML file for one of our 
>> custom configurations loads very slowly in version 4.1.0.  In version 
>> 3.8.1 it takes about 12 seconds, but in 4.1.0 it takes about 5 
>> minutes and 20 seconds.  We are using the Personal Edition in both 
>> cases.
>>
>> Is this a known problem?  (I tried looking for something on this in 
>> the archives for this list, but did not find anything.)
>>
>> 12 seconds to load is fine, but over 5 minutes is a bit daunting.  
>> Are there plans to address this?
>
> I'm almost sure you are comparing XXE v3.8.1 with custom configuration 
> A  to XXE v4.1 with custom configuration A' (which is enhanced custom 
> configuration A).

Ah, yes.  You are correct.

>
> Your CSS style sheet contains many rules like this one:
> ---
> iword item
> {
>   display:block;
>   color: concatenate(xpath("id(@lang)/@color"));
>   font-family: concatenate("'",xpath("id(@lang)/@font-family"),"'");
>   font-size: concatenate(xpath("id(@lang)/@font-size"));
>   font-style: concatenate(xpath("id(@lang)/@font-style"));
>   font-weight: concatenate(xpath("id(@lang)/@font-weight"));
> }
> ---
>
> The performance problem comes from the "id()" XPath function. There is 
> simply no way to make this kind of rule fast in the context on an XML 
> editor (while this is not a problem for a browser or for an XSLT 
> processor).

Sigh.

>
> This has always been the case, even in XXE v3. By the way, this part 
> of the code has not changed at all between v3 and v4.
>
> I did a very simple optimization which divided by 5 the load time of 
> your document. Before the optimization it took 11mn30s (on my old, 
> slow, desktop) to load your document. After this optimization, it took 
> 2mn40s, which is still totally unacceptable.

Is this optimization you did available to us?  That is, is there 
something I can do in the configuration files?

>
> I've also implemented another strategy to handle id() in the context 
> of CSS rules, and found it to be slower than current strategy (once 
> optimized). So I gave up this alternative strategy.
>
> I'm really sorry but there is nothing more I can do for your problem. 
> I can just recommend to keep the number of CSS rules making use of 
> id() to the bare minimum.

OK, I hear you, although I am disappointed to hear it.  Most, if not 
all, of these usages of id() are an attempt to render element X using 
the font properties of element Y, where an attribute on X is an IDREF to 
element Y.  Is there some other way to do this without using id()?

> ---
> PS: XLingPap.dtd references  XLingPapPublisherStyleSheet.dtd, which 
> does not exist. Your DTD module is called 
> "XLingPapPublisherStylesheet.dtd" (notice the capitalization). Of 
> course, this is not a problem on Windows, where the file system is 
> case-insensitive.

Thank you so much for noticing this error on my part.

And thank you, too, for your quick analysis of the problem.  We users 
truly appreciate your great support.

--Andy

>
>

Reply via email to