From dc7dc9ef49e3d396d2b47fa2befd1718aff45f0d Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 8 May 2020 01:59:01 +0000 Subject: www: preload: load all encodings at startup Encode lazy-loads encodings on an as-needed basis. This is great for short-lived programs, but leads to fragmentation in long-lived daemons where immortal allocations can get interleaved with short-lived, per-request allocations. Since we have no idea which encodings will be needed when there's a constant flow of incoming mail, just preload everything available at startup. --- lib/PublicInbox/WWW.pm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm index 275e509f..3a428218 100644 --- a/lib/PublicInbox/WWW.pm +++ b/lib/PublicInbox/WWW.pm @@ -141,6 +141,12 @@ sub call { # fragmentation since common allocators favor a large contiguous heap. sub preload { my ($self) = @_; + + # populate caches used by Encode internally, since emails + # may show up with any encoding. + require Encode; + Encode::find_encoding($_) for Encode->encodings(':all'); + require PublicInbox::ExtMsg; require PublicInbox::Feed; require PublicInbox::View; -- cgit v1.2.3-24-ge0c7