Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re: XSLT vs Templating, Part 2

by Matts (Deacon)
on Feb 07, 2002 at 10:37 UTC ( #143843=note: print w/replies, xml ) Need Help??


in reply to XSLT vs Templating, Part 2

Wow, nice set of tests!

It's a little unfair on the XSLT stuff, since you're going from DBI to XML to String to XML to XSLT. I need to update XML::Generator::DBI to output SAX2 (which I'm doing right now), after which you'll be able to go direct from XML::Generator::DBI into XML::LibXML::SAX::Builder, and skip the string phase completely.

I may even run the tests to see how it fares for me. I'll reply here after I've made those updates!

Replies are listed 'Best First'.
Re: Re: XSLT vs Templating, Part 2
by gellyfish (Monsignor) on Feb 07, 2002 at 12:23 UTC

    Alternatively you can cause XML::Generator::DBI to use the XML::Handler::BuildDOM as a handler in order to generate a DOM object that can then be fed to XML::XSLT again cutting out the intermediate reparse of the XML.

    I am toying with the idea of providing a utility to create modules that encapsulate preparsed DOM objects from XSLT so that step can be taken out as well if anyone is interested

    /J\

Re: Re: XSLT vs Templating, Part 2
by Matts (Deacon) on Feb 07, 2002 at 16:10 UTC
    OK, I hacked on this a bit. It seems that almost without a doubt the bottleneck is in XML::Generator::DBI (I added a tiny benchmark to the single sub, and generate took 11u, xslt took 1u and output took 1u. So I'm going to update it to SAX2, and make sure it goes faster. There's a lot of cruft in there, and I've learnt some about how to make DBI calls faster since I wrote it.

    You can make things faster by simply changing your generator to:

    my $generator = XML::Generator::DBI->new( Handler => XML::LibXML::SAX::Builder->new(), dbh => $dbh, RowElement => "monk" );
    Which seems to work (even without updating XML::Generator::DBI). Then you have to add ->toString to your calls for the TT level stuff. It makes all three faster - by about 40%.
Re: Re: XSLT vs Templating, Part 2
by Matts (Deacon) on Feb 07, 2002 at 16:48 UTC
    Ah, it makes a big difference if you also turn off indenting on XML::Generator::DBI (pass NoIndent => 1 to new()). I think that should be the default!

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://143843]
help
Chatterbox?
[oiskuu]: glibc getlogin just does ttyname() and falls back on getutline(); it's not security related at all. (reminds me of sendmail and remote finger services of the naive early spam era)
[Corion]: But yes, "who started this process" is interesting information :)
[tye]: no, I really believe that "login user" was added as a fundamental bit of info about each process in order to enhance the usefulness of auditing
[Corion]: Ah - if that information is saved in a file, then you could theoretically spam that file and confuse getlogin(). So, don't use it for authentication :)
[tye]: that is what getlogin() certainly *used* to do. I don't believe that is what it certainly should do.
[davido]: /var/run/utmp is 664 i think.
[tye]: Note that my "man getlogin" says that it uses stdin when it should use /dev/tty (calling a glibc bug). But that does not appear to be the case when I test it. But maybe Perl's getlogin() is not using glibc's getlogin().
[oiskuu]: well, run a strace and see what the getlogin does for you.... As I said. SELinux probably has those security labels. But not regular linux.
[tye]: for example, read https://unix. stackexchange.com/ questions/146138/ loginuid-should-be -allowed-to-change -or-not-mutable-or -not
[tye]: I'm not using SELinux and it certainly appears to disagree with you. shrug

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (9)
As of 2017-06-23 19:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    How many monitors do you use while coding?















    Results (554 votes). Check out past polls.