about summary refs log tree commit homepage
path: root/lib/PublicInbox/View.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2019-01-10 21:41:55 +0000
committerEric Wong <e@80x24.org>2019-01-10 21:41:55 +0000
commitb0e5062d43a96372801713ef78a78d6a1bc852bc (patch)
tree76ea973c854c945989924a40905c855258a6419c /lib/PublicInbox/View.pm
parentf6fea847bf71e5cc247497c95cdb73ccc74466d2 (diff)
parent59fd8cf084c6a67d9801c888a183eb83b552692d (diff)
downloadpublic-inbox-b0e5062d43a96372801713ef78a78d6a1bc852bc.tar.gz
* commit 'mem':
  view: more culling for search threads
  over: cull unneeded fields for get_thread
  searchmsg: remove unused fields for PSGI in Xapian results
  searchview: drop unused {seen} hashref
  searchmsg: remove Xapian::Document field
  searchmsg: get rid of termlist scanning for mid
  httpd: remove psgix.harakiri reference
Diffstat (limited to 'lib/PublicInbox/View.pm')
-rw-r--r--lib/PublicInbox/View.pm10
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) {