#!/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); }