about summary refs log tree commit homepage
path: root/lib/PublicInbox/Git.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-02-07 23:05:20 -1000
committerEric Wong <e@80x24.org>2021-02-08 22:07:50 +0000
commitecd4e2e20f1af200697e54c2a322a459cdf4c5fc (patch)
treeb7c532d20f6cd02f8280a9b3d533d5e4ebe6e4c0 /lib/PublicInbox/Git.pm
parentfbb7ccabbf54a4054e583dfabc4d0c4cbe2844cb (diff)
downloadpublic-inbox-ecd4e2e20f1af200697e54c2a322a459cdf4c5fc.tar.gz
This is necessary to avoid slowdowns with pathological cases
with many dates in the query, since each rev-parse invocation
takes ~5ms.

This is immeasurably slower with one open-ended range, but
already faster with any closed range featuring two dates which
require parsing via git.
Diffstat (limited to 'lib/PublicInbox/Git.pm')
-rw-r--r--lib/PublicInbox/Git.pm6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/PublicInbox/Git.pm b/lib/PublicInbox/Git.pm
index 9207962b..ac7ff267 100644
--- a/lib/PublicInbox/Git.pm
+++ b/lib/PublicInbox/Git.pm
@@ -377,8 +377,10 @@ sub qx {
 }
 
 sub date_parse {
-        my $d = $_[0]->qx('rev-parse', "--since=$_[1]");
-        substr($d, length('--max-age='), -1)
+        my $self = shift;
+        map {
+                substr($_, length('--max-age='), -1)
+        } $self->qx('rev-parse', map { "--since=$_" } @_);
 }
 
 # check_async and cat_async may trigger the other, so ensure they're