$ perl time_to_add_doc.plx s/iter size_4M size_2M size_1M size_500k size_250k size_4M 16.4 -- -51% -77% -87% -94% size_2M 8.00 105% -- -53% -73% -87% size_1M 3.73 340% 114% -- -41% -72% size_500k 2.20 646% 264% 70% -- -52% size_250k 1.06 1450% 656% 253% 108% -- $ #### #!/usr/bin/perl use strict; use warnings; use KinoSearch::InvIndexer; use KinoSearch::Analysis::PolyAnalyzer; use Benchmark qw( cmpthese ); my $invindexer; my $one_k_of_content = 'xxx ' x 256; sub refresh_invindexer { undef $invindexer; my $analyzer = KinoSearch::Analysis::PolyAnalyzer->new( language => 'en' ); $invindexer = KinoSearch::InvIndexer->new( analyzer => $analyzer, invindex => 'test_invindex', create => 1, ); $invindexer->spec_field( name => 'content' ); } cmpthese( 5, { size_250k => sub { refresh_invindexer; add_a_doc(250) for 1 .. 3 }, size_500k => sub { refresh_invindexer; add_a_doc(500) for 1 .. 3 }, size_1M => sub { refresh_invindexer; add_a_doc(1000) for 1 .. 3 }, size_2M => sub { refresh_invindexer; add_a_doc(2000) for 1 .. 3 }, size_4M => sub { refresh_invindexer; add_a_doc(4000) for 1 .. 3 }, } ); sub add_a_doc { my $repeat = shift; my $doc = $invindexer->new_doc; my $content = $one_k_of_content x $repeat; $doc->set_value( content => $content ); $invindexer->add_doc($doc); }