Subject: Re: [xsl] Seek ways to make my streaming XSLT code run faster (My streaming XSLT program has been running 12 hours and is only a quarter of the way to completion) From: "Graydon graydon@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Mon, 11 Aug 2025 03:57:39 -0000 |
On Mon, Aug 11, 2025 at 03:39:39AM +0000, Liam R. E. Quin liam@xxxxxxxxxxxxxxxx scripsit: > Without streaming, you can > (1) read the auxilliary Identifiers file into a map, such that > $identifiers("ABC ") exists if and only if "ABC " is in the Identifiers > file. > > (2) process each record in turn, and see if it has an identifier that's in the > map > <xsl:if test="$identifiers{VOR_Identifier} = 1"> > then we want this record > (having already eliminated the ones with SID_Identifier in the match pattern. > > Since map access is likely somewhere between O(1) and O(log n), this should be > fast. And if you need to do something with the various identifiers, you can create a bunch of functions and map each identifier value to the appropriate function reference and use that map to process a copy of the record. More or less <xsl:template match="record[not(SID_Identifier)][map:contains($identifiers,VOR_Identifier)]"> <xsl:variable name="temp" as="element()"> <xsl:copy-of select="."/> </xsl:variable> <xsl:sequence select="$identifiers(VOR_Identifier)($temp)"/> </xsl:template> Plus another template to collect those records we were not expecting and did not match. -- Graydon -- Graydon Saunders | graydonish@xxxxxxxxxxxx \xDE\xE6s ofer\xE9ode, \xF0isses sw\xE1 m\xE6g. -- Deor ("That passed, so may this.")
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Seek ways to make my stre, Liam R. E. Quin liam | Thread | [xsl] See https://github.com/whatwg, Martin Honnen martin |
Re: [xsl] Seek ways to make my stre, Liam R. E. Quin liam | Date | [xsl] See https://github.com/whatwg, Martin Honnen martin |
Month |