diff options
author | Eric Wong <e@80x24.org> | 2022-09-04 04:27:49 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2022-09-04 14:41:41 +0000 |
commit | d20753c2a9d63e60b90942176684370c9dce97fb (patch) | |
tree | f229502e0b44bf4e2e0a181b424b30b3cfc6c32c /xt/perf-msgview.t | |
parent | f521bf1ca5f779c3a18ff44f308ba318366ec7f5 (diff) | |
download | public-inbox-d20753c2a9d63e60b90942176684370c9dce97fb.tar.gz |
There'll be a number of upcoming changes to HTML rendering of messages to hopefully reduce memory usage and speedups by writing out to the gzip buffer earlier. Update the tests now so it'll be easier to test before and after results.
Diffstat (limited to 'xt/perf-msgview.t')
-rw-r--r-- | xt/perf-msgview.t | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/xt/perf-msgview.t b/xt/perf-msgview.t index cf550c1a..7f92ce85 100644 --- a/xt/perf-msgview.t +++ b/xt/perf-msgview.t @@ -7,7 +7,7 @@ use PublicInbox::TestCommon; use Benchmark qw(:all); use PublicInbox::Inbox; use PublicInbox::View; -use PublicInbox::Spawn qw(popen_rd); +use PublicInbox::WwwStream; my $inboxdir = $ENV{GIANT_INBOX_DIR} // $ENV{GIANT_PI_DIR}; my $blob = $ENV{TEST_BLOB}; @@ -31,26 +31,28 @@ if ($fh) { die "timed out waiting for --batch-check"; } -my $ctx = { +my $ctx = bless { env => { HTTP_HOST => 'example.com', 'psgi.url_scheme' => 'https' }, ibx => $ibx, www => Plack::Util::inline_object(style => sub {''}), -}; -my ($mime, $res, $oid, $type); + gz => PublicInbox::GzipFilter::gzip_or_die(), +}, 'PublicInbox::WwwStream'; +my ($eml, $res, $oid, $type); my $n = 0; -my $obuf = ''; my $m = 0; +${$ctx->{obuf}} = ''; +$ctx->{mhref} = '../'; my $cb = sub { - $mime = PublicInbox::Eml->new(shift); - PublicInbox::View::multipart_text_as_html($mime, $ctx); + $eml = PublicInbox::Eml->new(shift); + $eml->each_part(\&PublicInbox::View::add_text_body, $ctx, 1); + $ctx->zflush; ++$m; - $obuf = ''; + delete $ctx->{zbuf}; + ${$ctx->{obuf}} = ''; }; my $t = timeit(1, sub { - $ctx->{obuf} = \$obuf; - $ctx->{mhref} = '../'; if (defined $blob) { my $nr = $ENV{NR} // 10000; for (1..$nr) { @@ -67,6 +69,6 @@ my $t = timeit(1, sub { } $git->async_wait_all; }); -diag 'multipart_text_as_html took '.timestr($t)." for $n <=> $m messages"; +diag 'add_text_body took '.timestr($t)." for $n <=> $m messages"; is($m, $n, 'rendered all messages'); done_testing(); |