revlog: use radix tree also for matching keys shorter than 4 hex digits
authorMartin von Zweigbergk <martinvonz@google.com>
Sun, 29 Apr 2018 14:29:09 -0700
changeset 37858 92ed344a9e64
parent 37857 9231148ea599
child 37859 66dc9db6ed2c
revlog: use radix tree also for matching keys shorter than 4 hex digits I don't know what the reason for the 4-digit limit was, and I can't think of any real disadvantages of using the radix tree also when the requested minimum length is short. This speeds up `hg log -T '{shortest(node,1)}\n'` from 2m16s to 4.5s by making that not fall back to pure code. Differential Revision: https://phab.mercurial-scm.org/D3453
mercurial/cext/revlog.c
--- a/mercurial/cext/revlog.c	Fri Apr 06 12:55:32 2018 -0700
+++ b/mercurial/cext/revlog.c	Sun Apr 29 14:29:09 2018 -0700
@@ -1251,7 +1251,7 @@
 	if (!PyArg_ParseTuple(args, PY23("s#", "y#"), &node, &nodelen))
 		return NULL;
 
-	if (nodelen < 4) {
+	if (nodelen < 1) {
 		PyErr_SetString(PyExc_ValueError, "key too short");
 		return NULL;
 	}