[
Lists Home |
Date Index |
Thread Index
]
On Sat, Jan 24, 2004 at 02:18:42PM -0500, Elliotte Rusty Harold wrote:
> At 10:19 AM -0800 1/24/04, Tim Bray wrote:
> >It dawned on me that with all the checking and so on, genx might not
> >be as fast as it could possibly be. The way to fix this is obvious,
> >but it might amount to premature optimization. The idea is that you
> >predeclare your elements and attributes and get handles to them, so
> >that they only need to be namechecked and sorted once.
>
> Definitely premature.
I strongly disagree.
Tim's intent may be to add genxDeclareElement / genxFastStartElement
as a speed optimization, but I would use it to write more expressive
code. For example:
#define XSL_NAMESPACE "http://www.w3.org/1999/XSL/Transform"
#define XHTML_NAMESPACE "http://www.w3.org/1999/xhtml"
genxElement xsl_template = genxDeclareElement(w, XSL_NAMESPACE, "template");
genxElement xhtml_a = genxDeclareElement(w, XHTML_NAMESPACE, "a");
...
genxFastStartElement(w, xsl_template);
....
genxFastStartElement(w, xhtml_a);
genxFastStartAttribute(w, xhtml_href, "http://www.w3.org/");
This abstraction increases the expressivity of genx. If it also happens
to be a speed enhancement, that's a nice secondary benefit.
(I dislike the 'genxFast' prefix, but don't have a suggestion for an
alternative.)
Z.
|