W3C home > Mailing lists > Public > www-forms@w3.org > July 2006

Xform is going very slow on big Instances

From: Oliver Rath <rath@mglug.de>
Date: Wed, 26 Jul 2006 07:02:50 +0200
Message-ID: <44C6F77A.3020706@mglug.de>
To: www-forms@w3.org
Hi all,

my first submission here :-).

At the moment Im testing some bigger xforms document, written  for
generating a big formular with a lot of boilerplates (>1000) witch an
embedded repeat-sequence (for generating text from a list of
boilerplates). The formular is running under Firefox 1.5.0.4 with the
xforms-plugin 0.6.

the strukture of the data is like follows:

<default>
  <textblock>
	<ID>unique ID 0001>
	<Text>Lots of  Text (about 200-500 chars)</Text>
  </textblock>
  <textblock>
	<ID>unique ID 0002>
	<Text>Lots of another Text (about 200-500 chars)</Text>
  <textblock>
<default>
....

to be repeated >1200 times

Unfortunatly the formular is slowing down using the repeat-tag for
cloning boilerplates. The duration getting a new clone is > 20sek (!).

The repeat-code looks like following:

       <!-- repeating sequence -->
        <xforms:repeat nodeset="textblock" id="Textblock">
           <xforms:label ref="ID" />
            <xforms:switch>
                <xforms:case id="Cstart">
                    <xforms:trigger>
                        <xforms:label>B0100_bis_B0600</xforms:label>
                        <xforms:toggle ev:event="DOMActivate"
case="CB0100_bis_B0600" />
                    </xforms:trigger>
                    <xforms:trigger>
                        <xforms:label>B0850_Flure</xforms:label>
                        <xforms:toggle ev:event="DOMActivate"
case="CB0850_Flure" />
                    </xforms:trigger>
....
about 60 times, lots of other cases, running fine.
....
	<p nodeset="instance('B1900_Stuetzen_Unterzuege')/Textblock">
                        <xforms:label ref="ID" />
                        <xforms:select1 ref="." appearance="minimal">
                            <xforms:itemset
nodeset="instance('B1900_Stuetzen_Unterzuege')/Textblock">
                                <xforms:label ref="ID" />
                                <xforms:copy ref="." />
                            </xforms:itemset>
                        </xforms:select1>
                    </p>
                </xforms:case>
            </xforms:switch>
            <hr />
        </xforms:repeat>

....
(here you see the later integrated division in different files, see below)

For the first help, I divided the boilerplates in different files, each
connected seperatley:

.....
  <xforms:model>
            <xforms:instance id="B0700_Abschluesse"
src="Texte/B0700_Abschluesse.xml" />
            <xforms:instance id="B0700_Einbauten"
src="Texte/B0700_Einbauten.xml" />

            <xforms:instance id="B0750_Rauchabzug"
src="Texte/B0750_Rauchabzug.xml" />
            <xforms:instance id="B0850_Abschluesse"
src="Texte/B0850_Abschluesse.xml" />
            <xforms:instance id="B0850_Einbauten"

(sorry, the names are in German, because my Perl-Generatorscript uses
the Filenames for labeling the buttons)
...
and so on. So i have generated 57 instances. But this didnt speed up the
repeating sequence. Not for one second! I dont know why. Could it be
sensful, to use binding tag instead of the ref? Is there maybe a better
solution available?

The original idea is taken from the tax form example.

I didnt send the whole formular, because it is > 5 MB, but if anybody
interested, i will send it to him you self-evident.

Do you have some ideas getting  up the xforms code faster? What is the
internal representation of such lists?

Tfh,

Oliver







Received on Thursday, 27 July 2006 12:24:55 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Saturday, 10 March 2012 06:22:05 GMT