view _test/any.pl @ 59:0f3e369553bd

Rewritten property implementation (probably become slower but more flexible) Configuration infrastructure in progress (in the aspect of the lazy activation) Initial concept for the code generator
author wizard
date Tue, 09 Mar 2010 02:50:45 +0300
parents 16ada169ca75
children c289ed9662ca
line wrap: on
line source

#!/usr/bin/perl -w
use strict;
use lib '..\Lib';

require IMPL::DOM::Navigator::SimpleBuilder;
require IMPL::DOM::XMLReader;

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";
    
sub selectAll {
    my $node = shift;
    $node,map selectAll($_),@{$node->childNodes};
}