diff options
author | Eric Wong <e@80x24.org> | 2019-01-08 11:19:57 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2019-01-08 19:28:20 +0000 |
commit | 59fd8cf084c6a67d9801c888a183eb83b552692d (patch) | |
tree | 35f98b47583dc371526def07ddeaaa6b030d1ff8 /lib/PublicInbox/View.pm | |
parent | 7766a71df4cb715a240fd97a03dc0c31ab153c21 (diff) | |
download | public-inbox-59fd8cf084c6a67d9801c888a183eb83b552692d.tar.gz |
{mapping} overhead is now down to ~1.3M at the end of a giant thread from hell.
Diffstat (limited to 'lib/PublicInbox/View.pm')
-rw-r--r-- | lib/PublicInbox/View.pm | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm index 5ddb8425..cd125e00 100644 --- a/lib/PublicInbox/View.pm +++ b/lib/PublicInbox/View.pm @@ -219,7 +219,10 @@ sub index_entry { $rv .= _th_index_lite($mid_raw, \$irt, $id, $ctx); my @tocc; my $ds = $smsg->ds; # for v1 non-Xapian/SQLite users - my $mime = delete $smsg->{mime}; # critical to memory use + # deleting {mime} is critical to memory use, + # the rest of the fields saves about 400K as we iterate across 1K msgs + my ($mime) = delete @$smsg{qw(mime ds ts blob subject)}; + my $hdr = $mime->header_obj; my $from = _hdr_names_html($hdr, 'From'); obfuscate_addrs($obfs_ibx, $from) if $obfs_ibx; @@ -311,7 +314,10 @@ sub _th_index_lite { my $nr_s = 0; my $siblings; if (my $smsg = $node->{smsg}) { - ($$irt) = (($smsg->{references} || '') =~ m/<([^>]+)>\z/); + # delete saves about 200KB on a 1K message thread + if (my $refs = delete $smsg->{references}) { + ($$irt) = ($refs =~ m/<([^>]+)>\z/); + } } my $irt_map = $mapping->{$$irt} if defined $$irt; if (defined $irt_map) { |