From 2e3d2fdcad7181b8b4a8893023d4819a25e54ba1 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 30 Nov 2023 11:41:07 +0000 Subject: inbox: shrink data structures for publicinbox.*.hide We no longer vivify the intermediate $ibx->{-hide} hashref, instead we use $ibx->{-hide_$KEY} directly. This avoids an intermediate hashref and extra hash table lookups. --- lib/PublicInbox/CodeSearch.pm | 2 +- lib/PublicInbox/Inbox.pm | 8 ++------ lib/PublicInbox/WwwListing.pm | 2 +- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/lib/PublicInbox/CodeSearch.pm b/lib/PublicInbox/CodeSearch.pm index 208f7528..f4694686 100644 --- a/lib/PublicInbox/CodeSearch.pm +++ b/lib/PublicInbox/CodeSearch.pm @@ -328,7 +328,7 @@ EOM if (my $git = $dir2cr{$_}) { $ibx_p2g{$_} = $git; $ibx2self = 1; - $ibx->{-hide}->{www} or + $ibx->{-hide_www} or push @{$git->{ibx_score}}, [ $nr, $ibx->{name} ]; push @$gits, $git; diff --git a/lib/PublicInbox/Inbox.pm b/lib/PublicInbox/Inbox.pm index 7af0ad90..dd689221 100644 --- a/lib/PublicInbox/Inbox.pm +++ b/lib/PublicInbox/Inbox.pm @@ -70,12 +70,8 @@ sub new { delete $opts->{feedmax}; } # allow any combination of multi-line or comma-delimited hide entries - my $hide = {}; - if (defined(my $h = $opts->{hide})) { - foreach my $v (@$h) { - $hide->{$_} = 1 foreach (split(/\s*,\s*/, $v)); - } - $opts->{-hide} = $hide; + for $v (@{delete($opts->{hide}) // []}) { + $opts->{-'hide_'.$_} = 1 for split(/\s*,\s*/, $v); } bless $opts, $class; } diff --git a/lib/PublicInbox/WwwListing.pm b/lib/PublicInbox/WwwListing.pm index e3d2e84c..2d6c74da 100644 --- a/lib/PublicInbox/WwwListing.pm +++ b/lib/PublicInbox/WwwListing.pm @@ -79,7 +79,7 @@ sub hide_key { 'www' } sub hide_inbox { my ($ctx, $ibx, $re) = @_; - $ibx->{-hide}->{$ctx->hide_key} || + $ibx->{'-hide_'.$ctx->hide_key} || !grep(/$re/, @{$ibx->{url} // $ctx->{-name_is_url} // []}) } -- cgit v1.2.3-24-ge0c7