We'll also save a few LoC when generating it. $smsg objects can
linger a while when rendering large threads, so saving a few
bytes here can add up to several hundred KB saved.
I noticed this while chasing the ref cycle leak in commit
b28e74c9dc0a (www: fix ref cycle from threading w/ extindex, 2021-10-03).
While there's no longer a leak, releasing memory earlier can
allow it to be reused sooner and reduce both memory traffic and
memory pressure.
$min = $pct;
my $s = ascii_html($smsg->{subject});
- my $f = ascii_html($smsg->{from_name});
+ my $f = ascii_html(delete $smsg->{from_name});
if ($obfs_ibx) {
obfuscate_addrs($obfs_ibx, $s);
obfuscate_addrs($obfs_ibx, $f);
sub psgi_cull ($) {
my ($self) = @_;
- # ghosts don't have ->{from}
- my $from = delete($self->{from}) // '';
- my @n = PublicInbox::Address::names($from);
- $self->{from_name} = join(', ', @n);
-
# drop NNTP-only fields which aren't relevant to PSGI results:
# saves ~80K on a 200 item search result:
# TODO: we may need to keep some of these for JMAP...
- delete @$self{qw(tid to cc bytes lines)};
+ my ($f) = delete @$self{qw(from tid to cc bytes lines)};
+ # ghosts don't have ->{from}
+ $self->{from_name} = join(', ', PublicInbox::Address::names($f // ''));
$self;
}
$$skel .= delete($ctx->{sl_note}) || '';
}
- my $f = ascii_html($smsg->{from_name});
+ my $f = ascii_html(delete $smsg->{from_name});
my $obfs_ibx = $ctx->{-obfs_ibx};
obfuscate_addrs($obfs_ibx, $f) if $obfs_ibx;