From b896b1043b81274b8b1737320c49f3fb7ce9f842 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 4 Aug 2022 08:17:02 +0000 Subject: feed: avoid unnecessary map loop in non-over path We can bless objects while doing the initial insertion to avoid extra the extra map iteration and temporary array(s). Fewer ops means memory savings for the likely case of ->over users, too. --- lib/PublicInbox/Feed.pm | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'lib/PublicInbox/Feed.pm') diff --git a/lib/PublicInbox/Feed.pm b/lib/PublicInbox/Feed.pm index b2219dad..ee579f6d 100644 --- a/lib/PublicInbox/Feed.pm +++ b/lib/PublicInbox/Feed.pm @@ -1,10 +1,10 @@ -# Copyright (C) 2013-2021 all contributors +# Copyright (C) all contributors # License: AGPL-3.0+ # # Used for generating Atom feeds for web-accessible mailing list archives. package PublicInbox::Feed; use strict; -use warnings; +use v5.10.1; use PublicInbox::View; use PublicInbox::WwwAtomStream; use PublicInbox::Smsg; # this loads w/o Search::Xapian @@ -108,13 +108,13 @@ sub recent_msgs { my $last; my $last_commit; local $/ = "\n"; - my @oids; + my @ret; while (defined(my $line = <$log>)) { if ($line =~ /$addmsg/o) { my $add = $1; next if $deleted{$add}; # optimization-only - push @oids, $add; - if (scalar(@oids) >= $max) { + push(@ret, bless { blob => $add }, 'PublicInbox::Smsg'); + if (scalar(@ret) >= $max) { $last = 1; last; } @@ -136,8 +136,7 @@ sub recent_msgs { $last_commit and $ctx->{next_page} = qq[] . 'next (older)'; - - [ map { bless {blob => $_ }, 'PublicInbox::Smsg' } @oids ]; + \@ret; } 1; -- cgit v1.2.3-24-ge0c7