The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Test::More;

use Time::HiRes qw/gettimeofday/;

my $ua1 = "Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)";
my $ua2 = "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)";
my $ua3 = "DoCoMo/2.0 P900i(c100;TB;W24H11) (compatible; ichiro/mobile goo; +http://help.goo.ne.jp/help/article/1142/)";
my $ua4 = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; 2004/11/08; GoogleT5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)";
my $ua5 = "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.52.7 (KHTML, like Gecko) Version/5.1.2 Safari/534.52.7";
my $ua6 = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1) Sleipnir/2.8.0";

my $p = qr/Yahoo! Slurp;|YahooFeedSeeker(Beta)?Jp|Yahoo Pipes|msnbot|compatible; bingbot|Yeti|Indy Library|Apple-PubSub|Hatena (Antenna|Pagetitle|Diary RSS)|Baiduspider|ichiro|livedoor FeedFetcher|facebookexternalhit/o;

sub search_regexp {
    my $ua = shift;
    $ua =~ $p;
}

sub search_index {
    my $ua = shift;
    if (index($ua, "Yahoo") > -1) { return 1; }
    elsif (index($ua, "msnbot") > -1) { return 1; }
    elsif (index($ua, "bingbot") > -1) { return 1; }
    elsif (index($ua, "Baidu") > -1) { return 1; }
    elsif (index($ua, "Yeti") > -1) { return 1; }
    elsif (index($ua, "facebookexternalhit") > -1) { return 1; }
    elsif (index($ua, "Apple-PubSub") > -1) { return 1; }
    elsif (index($ua, "livedoor FeedFetcher") > -1) { return 1; }
    elsif (index($ua, "Hatena ") > -1) { return 1; }
    elsif (index($ua, "Indy Library") > -1) { return 1; }
    return 0;
}

subtest 'regexp_pattern' => sub {
    is (1,1);
    return;
    # got: '3292305', 14080000 in java
    my ($start,$ustart) = gettimeofday;
    for (my $i = 0 ; $i < 100000 ; $i++) {
        search_regexp($ua1); search_regexp($ua2); search_regexp($ua3);
        search_regexp($ua4); search_regexp($ua5); search_regexp($ua6);
    }
    my ($end,$uend) = gettimeofday;
    is (($end * 1000000 + $uend) - ($start * 1000000 + $ustart), 1, "regexp_pattern");
};

subtest 'index_pattern' => sub {
    is (1,1);
    return;
    # got: '1761313' in 1060000 in java
    my ($start,$ustart) = gettimeofday;
    for (my $i = 0 ; $i < 100000 ; $i++) {
        search_index($ua1); search_index($ua2); search_index($ua3);
        search_index($ua4); search_index($ua5); search_index($ua6);
    }
    my ($end,$uend) = gettimeofday;
    is (($end * 1000000 + $uend) - ($start * 1000000 + $ustart), 1, "index_pattern");
};

done_testing;