AlignDB-IntSpanXS
view release on metacpan or search on metacpan
benchmark/test_ai.pl view on Meta::CPAN
#!/usr/bin/perl
use strict;
use warnings;
use Time::HiRes qw{ time };
use YAML qw(Dump Load DumpFile LoadFile);
use AlignDB::IntSpan;
use AlignDB::IntSpanXS;
if ( @ARGV == 0 ) {
print "Usage:\n"
. " " x 4
. "perl $0 test\n"
. " " x 4
. "perl $0 benchmark\n"
. " " x 4
. "perl $0 file\n"
. "With AlignDB::IntSpanXS\n"
. " " x 4
. "perl $0 file xs\n";
}
elsif ( $ARGV[0] eq "test" ) {
run_test();
}
elsif ( $ARGV[0] eq "benchmark" ) {
run_benchmark();
}
elsif ( $ARGV[0] eq "file" ) {
run_file();
}
else {
printf "unrecognized commad '%s'. Abort!\n", $ARGV[0];
}
sub new_set {
if ( defined $ARGV[1] ) {
return AlignDB::IntSpanXS->new(@_);
}
else {
return AlignDB::IntSpan->new(@_);
}
}
sub run_test {
my $itx = new_set();
print Dump {
POS_INF => $itx->POS_INF,
NEG_INF => $itx->NEG_INF,
EMPTY_STRING => $itx->EMPTY_STRING,
};
print Dump $itx->as_string;
$itx->add_range( 1, 9, 20, 39 );
print Dump {
edge_size => $itx->edge_size,
edges => [ $itx->edges ],
ranges => [ $itx->ranges ],
is_empty => $itx->is_empty,
is_not_empty => $itx->is_not_empty,
as_string => $itx->as_string,
};
for ( -5, 29, 100 ) {
printf "val %d contain %d\n", $_, $itx->contains($_);
}
my @array = ( 5, 30 );
printf "contains_all %d\n", $itx->contains_all(@array);
printf "contains_any %d\n", $itx->contains_any(@array);
push @array, -5;
printf "contains_all %d\n", $itx->contains_all(@array);
printf "contains_any %d\n", $itx->contains_any(@array);
@array = ( 60, 70, 80, 90 );
$itx->add_range(@array);
print Dump $itx->as_string;
@array = ( 68, 75 );
$itx->add_range(@array);
print Dump $itx->as_string;
$itx->add(99);
print Dump $itx->as_string;
$itx->add( 77, 79 );
print Dump $itx->as_string;
$itx->invert;
print Dump $itx->as_string;
$itx->invert;
print Dump $itx->as_string;
$itx->remove_range( 66, 71 );
print Dump $itx->as_string;
$itx->remove(85);
print Dump $itx->as_string;
$itx->remove( 87, 88 );
print Dump $itx->as_string;
$itx->add("-30--10");
print Dump $itx->as_string;
$itx->remove("62-78");
print Dump $itx->as_string;
my $supp = AlignDB::IntSpan->new("-15-5");
print Dump $supp->as_string;
$itx->add($supp);
print Dump $itx->as_string;
$supp->clear;
print Dump $supp->as_string;
$supp->add("-20--5");
print Dump $supp->as_string;
$itx->remove($supp);
print Dump $itx->as_string;
( run in 1.047 second using v1.01-cache-2.11-cpan-9581c071862 )