From 4981c5c7940ca0a7b669fd4c5b8338bdd6cee710 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 10 Sep 2022 08:17:28 +0000 Subject: [PATCH] www_listing: switch to `print $zfh' Again, ->deflate (and thus ->zmore) calls are relatively expensive compared to `print' ops using PerlIO::scalar behind-the-scenes. While I can likely optimize the `join' away here, too, that will happen in a future commit. --- lib/PublicInbox/WwwListing.pm | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/lib/PublicInbox/WwwListing.pm b/lib/PublicInbox/WwwListing.pm index 35abf050..72c940dd 100644 --- a/lib/PublicInbox/WwwListing.pm +++ b/lib/PublicInbox/WwwListing.pm @@ -208,27 +208,28 @@ sub psgi_triple { my $h = [ 'Content-Type', 'text/html; charset=UTF-8', 'Content-Length', undef ]; my $gzf = gzf_maybe($h, $ctx->{env}); - $gzf->zmore('public-inbox listing' . - $ctx->{www}->style('+/') . - ''); + my $zfh = $gzf->zfh; + print $zfh 'public-inbox listing', + $ctx->{www}->style('+/'), + ''; my $code = 404; if (my $list = delete $ctx->{-list}) { my $mset = delete $ctx->{-mset}; $code = 200; if ($mset) { # already sorted, so search bar: - $gzf->zmore(mset_nav_top($ctx, $mset)); + print $zfh mset_nav_top($ctx, $mset); } else { # sort config dump by ->modified @$list = map { $_->[1] } sort { $b->[0] <=> $a->[0] } @$list; } - $gzf->zmore('
', join("\n", @$list)); # big
-		$gzf->zmore(mset_footer($ctx, $mset)) if $mset;
+		print $zfh '
', join("\n", @$list); # big
+		print $zfh mset_footer($ctx, $mset) if $mset;
 	} elsif (my $mset = delete $ctx->{-mset}) {
-		$gzf->zmore(mset_nav_top($ctx, $mset) .
-				'
no matching inboxes' .
-				mset_footer($ctx, $mset));
+		print $zfh mset_nav_top($ctx, $mset),
+				'
no matching inboxes',
+				mset_footer($ctx, $mset);
 	} else {
-		$gzf->zmore('
no inboxes, yet');
+		print $zfh '
no inboxes, yet';
 	}
 	my $out = $gzf->zflush('

'.
 qq(This is a listing of public inboxes, see the `mirror' link of each inbox
-- 
2.48.1