diff options
author | Eric Wong <e@yhbt.net> | 2020-06-10 07:04:40 +0000 |
---|---|---|
committer | Eric Wong <e@yhbt.net> | 2020-06-13 07:55:45 +0000 |
commit | cfae078171fc1453be0795e4ba5f0252627ebba3 (patch) | |
tree | 743f0b1b5cf356bf018b5619619edd362dcdd0a8 /xt/perf-imap-list.t | |
parent | 48180dbb004b5f59b2e80613b6fa2e5e869316f1 (diff) | |
download | public-inbox-cfae078171fc1453be0795e4ba5f0252627ebba3.tar.gz |
Finish up the IMAP-only portion of iterative config reloading, which allows us to create all sub-ranges of an inbox up front. The InboxIdler still uses ->each_inbox which will struggle with 100K inboxes. Having messages in the top-level newsgroup name of an inbox will still waste bandwidth for clients which want to do full syncs once there's a rollover to a new 50K range. So instead, make every inbox accessible exclusively via 50K slices in the form of "$NEWSGROUP.$UID_MIN-$UID_END". This introduces the DummyInbox, which makes $NEWSGROUP and every parent component a selectable, empty inbox. This aids navigation with mutt and possibly other MUAs. Finally, the xt/perf-imap-list maintainer test is broken, now, so remove it. The grep perlfunc is already proven effective, and we'll have separate tests for mocking out ~100k inboxes.
Diffstat (limited to 'xt/perf-imap-list.t')
-rw-r--r-- | xt/perf-imap-list.t | 38 |
1 files changed, 0 insertions, 38 deletions
diff --git a/xt/perf-imap-list.t b/xt/perf-imap-list.t deleted file mode 100644 index 0f00f487..00000000 --- a/xt/perf-imap-list.t +++ /dev/null @@ -1,38 +0,0 @@ -#!perl -w -# Copyright (C) 2020 all contributors <meta@public-inbox.org> -# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt> -use Test::More; -use_ok 'PublicInbox::IMAP'; -use_ok 'PublicInbox::IMAPD'; -use PublicInbox::DS; -use Benchmark qw(:all); -my @n = map { { newsgroup => "inbox.comp.foo.bar.$_" } } (0..50000); -push @n, map { { newsgroup => "xobni.womp.foo.bar.$_" } } (0..50000); -my $self = { imapd => { grouplist => \@n } }; -my $n = scalar @n; -my $t = timeit(1, sub { - PublicInbox::IMAPD::refresh_inboxlist($self->{imapd}); -}); -diag timestr($t). "refresh $n inboxes"; - -open my $null, '>', '/dev/null' or BAIL_OUT "open: $!"; -my $ds = { sock => $null }; -my $nr = 200; -diag "starting benchmark..."; -my $cmd_list = \&PublicInbox::IMAP::cmd_list; -$t = timeit(1, sub { - for (0..$nr) { - my $res = $cmd_list->($self, 'tag', '', '*'); - PublicInbox::DS::write($ds, $res); - } -}); -diag timestr($t). "list all for $n inboxes $nr times"; -$nr = 20; -$t = timeit(1, sub { - for (0..$nr) { - my $res = $cmd_list->($self, 'tag', 'inbox.', '%'); - PublicInbox::DS::write($ds, $res); - } -}); -diag timestr($t). "list partial for $n inboxes $nr times"; -done_testing; |