about summary refs log tree commit homepage
path: root/xt/perf-obfuscate.t
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2022-09-04 04:27:49 +0000
committerEric Wong <e@80x24.org>2022-09-04 14:41:41 +0000
commitd20753c2a9d63e60b90942176684370c9dce97fb (patch)
treef229502e0b44bf4e2e0a181b424b30b3cfc6c32c /xt/perf-obfuscate.t
parentf521bf1ca5f779c3a18ff44f308ba318366ec7f5 (diff)
downloadpublic-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-obfuscate.t')
-rw-r--r--xt/perf-obfuscate.t26
1 files changed, 14 insertions, 12 deletions
diff --git a/xt/perf-obfuscate.t b/xt/perf-obfuscate.t
index 640309d2..4da36124 100644
--- a/xt/perf-obfuscate.t
+++ b/xt/perf-obfuscate.t
@@ -1,5 +1,5 @@
 #!perl -w
-# Copyright (C) 2021 all contributors <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 use strict;
 use v5.10.1;
@@ -7,6 +7,7 @@ use PublicInbox::TestCommon;
 use Benchmark qw(:all);
 use PublicInbox::Inbox;
 use PublicInbox::View;
+use PublicInbox::WwwStream;
 
 my $inboxdir = $ENV{GIANT_INBOX_DIR};
 plan skip_all => "GIANT_INBOX_DIR not defined for $0" unless $inboxdir;
@@ -22,7 +23,6 @@ if (require_git(2.19, 1)) {
 "git <2.19, cat-file lacks --unordered, locality suffers\n";
 }
 require_mods qw(Plack::Util);
-use_ok 'Plack::Util';
 my $ibx = PublicInbox::Inbox->new({ inboxdir => $inboxdir, name => 'name' ,
                                     obfuscate => $obfuscate});
 my $git = $ibx->git;
@@ -31,26 +31,28 @@ my $vec = '';
 vec($vec, fileno($fh), 1) = 1;
 select($vec, undef, undef, 60) or 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} = '../';
         while (<$fh>) {
                 ($oid, $type) = split / /;
                 next if $type ne 'blob';
@@ -59,6 +61,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();