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.
-# 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;
# 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 PublicInbox::View;
use PublicInbox::WwwAtomStream;
use PublicInbox::Smsg; # this loads w/o Search::Xapian
use PublicInbox::View;
use PublicInbox::WwwAtomStream;
use PublicInbox::Smsg; # this loads w/o Search::Xapian
my $last;
my $last_commit;
local $/ = "\n";
my $last;
my $last_commit;
local $/ = "\n";
while (defined(my $line = <$log>)) {
if ($line =~ /$addmsg/o) {
my $add = $1;
next if $deleted{$add}; # optimization-only
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_commit and
$ctx->{next_page} = qq[<a\nhref="?r=$last_commit"\nrel=next>] .
'next (older)</a>';
$last_commit and
$ctx->{next_page} = qq[<a\nhref="?r=$last_commit"\nrel=next>] .
'next (older)</a>';
-
- [ map { bless {blob => $_ }, 'PublicInbox::Smsg' } @oids ];