[PATCH 0/9] send-email: various optimizations to speed up by >2x
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- May 12, 2021, 13:48 UTC
- Message-ID
- <cover-0.9-0000000000-20210512T132955Z-avarab@gmail.com>
This is on top of my just-submitted [1] which in turn is on top of send-email work of mine sitting in "next".
I was meaning to hold off on these patches for a bit, but given the concurrent on-list discussion about doing config discovery in send-email I wanted to send this now.
This combines by not-picked-up[1] recent patches to remove the support for the "sendemail.smtpssl" variable with the later patches showing where that effort was really going.
As noted in the subject this speeds up git-send-email invocations by ~2x or more, and brings the very slow t9001 test from running in ~26s on my box to ~12s. It's no longer consistently the slowest test I run.
This is basically done in two ways: We lazily invoke "git config" to get config, before it's very eager, and deferring Perl compilation with s/use/require/g.
1. https://lore.kernel.org/git/patch-1.1-92571a8cf7-20210512T094803Z-avarab@gmail.com/ 2. https://lore.kernel.org/git/cover-0.2-00000000000-20210411T144128Z-avarab@gmail.com/
Ævar Arnfjörð Bjarmason (9): send-email: remove non-working support for "sendemail.smtpssl" send-email: refactor sendemail.smtpencryption config parsing send-email: lazily load config for a big speedup send-email: lazily shell out to "git var" send-email: use function syntax instead of barewords send-email: get rid of indirect object syntax send-email: lazily load modules for a big speedup perl: lazily load some common Git.pm setup code send-email: move trivial config handling to Perl
Documentation/config/sendemail.txt | 3 - git-send-email.perl | 145 +++++++++++++++++------------ perl/Git.pm | 49 +++++----- 3 files changed, 111 insertions(+), 86 deletions(-)
-- 2.31.1.909.g789bb6d90e