about summary refs log tree commit homepage
path: root/lib/PublicInbox/Feed.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2022-08-04 08:17:02 +0000
committerEric Wong <e@80x24.org>2022-08-04 20:09:35 +0000
commitb896b1043b81274b8b1737320c49f3fb7ce9f842 (patch)
tree74d7c061a826edf3c7917c63c0bb99f1afeee64e /lib/PublicInbox/Feed.pm
parent956fa442de1699e078cc7babb7a34af83d143307 (diff)
downloadpublic-inbox-b896b1043b81274b8b1737320c49f3fb7ce9f842.tar.gz
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.
Diffstat (limited to 'lib/PublicInbox/Feed.pm')
-rw-r--r--lib/PublicInbox/Feed.pm13
1 files changed, 6 insertions, 7 deletions
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 <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 #
 # 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[<a\nhref="?r=$last_commit"\nrel=next>] .
                                         'next (older)</a>';
-
-        [ map { bless {blob => $_ }, 'PublicInbox::Smsg' } @oids ];
+        \@ret;
 }
 
 1;