]> Sergey Matveev's repositories - public-inbox.git/commitdiff
cgi: delay some requires
authorEric Wong <e@80x24.org>
Sun, 20 Apr 2014 11:17:16 +0000 (11:17 +0000)
committerEric Wong <e@80x24.org>
Sun, 20 Apr 2014 11:17:16 +0000 (11:17 +0000)
This shaves off nearly 100ms when my Core2Duo is clocked to 800Mhz
when rendering a full HTML index.

lib/PublicInbox/Feed.pm
public-inbox.cgi

index 9733190cede781d5b67c50b30222ebad951e595a..81ac66b9439c66fd3a059ffdaf718c7d15b090bf 100644 (file)
@@ -3,22 +3,17 @@
 package PublicInbox::Feed;
 use strict;
 use warnings;
-use XML::Atom::SimpleFeed;
-use Email::MIME;
 use Email::Address;
 use URI::Escape qw/uri_escape/;
 use Encode qw/find_encoding/;
 use Encode::MIME::Header;
 use CGI qw(escapeHTML);
-use POSIX qw(strftime);
 use Date::Parse qw(strptime str2time);
 eval { require Git }; # this is GPLv2+, so we are OK to use it
 use constant {
        DATEFMT => '%Y-%m-%dT%H:%M:%SZ',
        MAX_PER_PAGE => 25,
 };
-use PublicInbox::View;
-use Mail::Thread;
 my $enc_utf8 = find_encoding('utf8');
 my $enc_ascii = find_encoding('us-ascii');
 my $enc_mime = find_encoding('MIME-Header');
@@ -28,6 +23,10 @@ my $enc_mime = find_encoding('MIME-Header');
 # main function
 sub generate {
        my ($class, $args) = @_;
+       require XML::Atom::SimpleFeed;
+       require PublicInbox::View;
+       require Email::MIME;
+       require POSIX;
        my $max = $args->{max} || MAX_PER_PAGE;
        my $top = $args->{top}; # bool
 
@@ -43,7 +42,7 @@ sub generate {
                                "http://example.com/atom",
                },
                id => $feed_opts->{address} || 'public-inbox@example.com',
-               updated => strftime(DATEFMT, gmtime),
+               updated => POSIX::strftime(DATEFMT, gmtime),
        );
 
        my $git = try_git_pm($args->{git_dir});
@@ -56,6 +55,8 @@ sub generate {
 
 sub generate_html_index {
        my ($class, $args) = @_;
+       require Mail::Thread;
+
        my $max = $args->{max} || MAX_PER_PAGE;
        my $top = $args->{top}; # bool
        local $ENV{GIT_DIR} = $args->{git_dir};
@@ -237,7 +238,7 @@ sub feed_date {
        my ($date) = @_;
        my @t = eval { strptime($date) };
 
-       scalar(@t) ? strftime(DATEFMT, @t) : 0;
+       scalar(@t) ? POSIX::strftime(DATEFMT, @t) : 0;
 }
 
 # returns 0 (skipped) or 1 (added)
index 5e2815801dc338c1df2f06c067533ef1a3086b8b..03202c61736afa7887887ab7a8786a8584bc2105 100755 (executable)
@@ -16,7 +16,6 @@ use CGI qw(:cgi :escapeHTML -nosticky); # PSGI/FastCGI/mod_perl compat
 use Encode qw(decode_utf8);
 use PublicInbox::Config;
 use URI::Escape qw(uri_escape uri_unescape);
-use Digest::SHA qw(sha1_hex);
 our $LISTNAME_RE = qr!\A/([\w\.\-]+)!;
 our $pi_config;
 BEGIN {
@@ -150,7 +149,8 @@ sub get_index {
 sub mid2blob {
        my ($ctx) = @_;
        local $ENV{GIT_DIR} = $ctx->{git_dir};
-       my $hex = sha1_hex($ctx->{mid});
+       require Digest::SHA;
+       my $hex = Digest::SHA::sha1_hex($ctx->{mid});
        $hex =~ /\A([a-f0-9]{2})([a-f0-9]{38})\z/i or
                        die "BUG: not a SHA-1 hex: $hex";
        my $blob = `git cat-file blob HEAD:$1/$2 2>/dev/null`;