user/dev discussion of public-inbox itself
 help / color / mirror / code / Atom feed
From: Eric Wong <e@80x24.org>
To: meta@public-inbox.org
Subject: [PATCH 1/4] solver_git: shorten scalar lifetimes
Date: Sat,  9 Oct 2021 12:03:33 +0000	[thread overview]
Message-ID: <20211009120336.2057-2-e@80x24.org> (raw)
In-Reply-To: <20211009120336.2057-1-e@80x24.org>

Some of these scalar buffers may be large patches, so try
to keep them as short-lived as possible to reduce memory
pressure.
---
 lib/PublicInbox/SolverGit.pm | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/PublicInbox/SolverGit.pm b/lib/PublicInbox/SolverGit.pm
index b0cd0f2c..5d5060f4 100644
--- a/lib/PublicInbox/SolverGit.pm
+++ b/lib/PublicInbox/SolverGit.pm
@@ -111,8 +111,6 @@ sub extract_diff ($$) {
 	my ($self, $want, $smsg) = @$arg;
 	my ($part) = @$p; # ignore $depth and @idx;
 	my $ct = $part->content_type || 'text/plain';
-	my ($s, undef) = msg_part_text($part, $ct);
-	defined $s or return;
 	my $post = $want->{oid_b};
 	my $pre = $want->{oid_a};
 	if (!defined($pre) || $pre !~ /\A[a-f0-9]+\z/) {
@@ -122,11 +120,12 @@ sub extract_diff ($$) {
 	# Email::MIME::Encodings forces QP to be CRLF upon decoding,
 	# change it back to LF:
 	my $cte = $part->header('Content-Transfer-Encoding') || '';
+	my ($s, undef) = msg_part_text($part, $ct);
+	defined $s or return;
+	delete $part->{bdy};
 	if ($cte =~ /\bquoted-printable\b/i && $part->crlf eq "\n") {
 		$s =~ s/\r\n/\n/sg;
 	}
-
-
 	$s =~ m!( # $1 start header lines we save for debugging:
 
 		# everything before ^index is optional, but we don't
@@ -169,6 +168,7 @@ sub extract_diff ($$) {
 		# because git-apply(1) handles that case, too
 		(?:^(?:[\@\+\x20\-\\][^\n]*|)$LF)+
 	)!smx or return;
+	undef $s; # free memory
 
 	my $di = {
 		hdr_lines => $1,

  reply	other threads:[~2021-10-09 12:03 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-09 12:03 [PATCH 0/4] WWW-related memory savings Eric Wong
2021-10-09 12:03 ` Eric Wong [this message]
2021-10-09 12:03 ` [PATCH 2/4] view: discard Eml->{bdy} when done using Eric Wong
2021-10-09 12:03 ` [PATCH 3/4] http: avoid Perl target cache for psgi.input Eric Wong
2021-10-09 12:03 ` [PATCH 4/4] view: save memory by dropping smsg->{from_name} on use Eric Wong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://public-inbox.org/README

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211009120336.2057-2-e@80x24.org \
    --to=e@80x24.org \
    --cc=meta@public-inbox.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/public-inbox.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).