Mercurial > pub > Impl
view _test/any.pl @ 250:129e48bb5afb
DOM refactoring
ObjectToDOM methods are virtual
QueryToDOM uses inflators
Fixed transform for the complex values in the ObjectToDOM
QueryToDOM doesn't allow to use complex values (HASHes) as values for nodes (overpost problem)
author | sergey |
---|---|
date | Wed, 07 Nov 2012 04:17:53 +0400 |
parents | c289ed9662ca |
children | 3f38dabaf5cc |
line wrap: on
line source
#!/usr/bin/perl -w use strict; use lib '..\Lib'; require IMPL::DOM::Navigator::SimpleBuilder; require IMPL::DOM::XMLReader; require IMPL::DOM::Schema; my $builder = IMPL::DOM::Navigator::SimpleBuilder->new(); use Time::HiRes qw(gettimeofday tv_interval); my $t = [gettimeofday]; $builder->NavigateCreate('personInfo', version => '1'); $builder->NavigateCreate('firstName')->nodeValue('Nemo'); $builder->Back(); $builder->NavigateCreate('lastName')->nodeValue('Nobel'); $builder->Back(); $builder->NavigateCreate('lastName')->nodeValue('Gardum'); $builder->Back(); for(my $i = 0 ; $i < 10000; $i++) { $builder->NavigateCreate('address', local => 1); $builder->NavigateCreate('street')->nodeValue('Hellroad'); $builder->Back(); $builder->NavigateCreate('line')->nodeValue($_); $builder->Back(); $builder->Back(); } $builder->Back(); print "Build: ",tv_interval($t,[gettimeofday]),"\n"; $t = [gettimeofday]; my $doc = new IMPL::DOM::Document(nodeName => 'doc'); for(my $i = 0 ; $i < 30000; $i++) { my $node = new IMPL::DOM::Node(nodeName => 'test'); $node->nodeValue(100); $doc->appendChild($node); } print "Create 30000 nodes: ",tv_interval($t,[gettimeofday]),"\n"; $t = [gettimeofday]; $builder = IMPL::DOM::Navigator::SimpleBuilder->new(); my $reader = IMPL::DOM::XMLReader->new( Navigator => $builder ); $reader->ParseFile("Resources/large.xml"); print "Parsing large Xml file: ",tv_interval($t,[gettimeofday]),"\n"; my $count = selectAll($builder->Document); my $len = length $builder->Document->text; print "Total nodes loaded: $count, data length: $len\n"; $t = [gettimeofday]; $builder = IMPL::DOM::Navigator::SimpleBuilder->new(); my $reader2 = IMPL::DOM::XMLReader->new( Navigator => $builder ); $reader2->ParseFile("Resources/person_info.xml"); print "Parsing small Xml file: ",tv_interval($t,[gettimeofday]),"\n"; $t = [gettimeofday]; IMPL::DOM::Schema->LoadSchema('Resources/form.xml') for 1..10; print "Load a small schema 10 times: ",tv_interval($t,[gettimeofday]),"\n"; sub selectAll { my $node = shift; $node,map selectAll($_),@{$node->childNodes}; }