Mercurial > public > mercurial-scm > hg
diff mercurial/cext/parsers.c @ 33925:2c37f9dabc32
encoding: add fast path of jsonescape() (issue5533)
This isn't highly optimized as it copies characters one by one, but seems
reasonably simple and not slow.
(with mercurial repo)
$ export HGRCPATH=/dev/null HGPLAIN=
$ hg log --time --config experimental.stabilization=all -Tjson > /dev/null
(original)
time: real 6.830 secs (user 6.740+0.000 sys 0.080+0.000)
time: real 6.690 secs (user 6.650+0.000 sys 0.040+0.000)
time: real 6.700 secs (user 6.640+0.000 sys 0.060+0.000)
(this patch)
time: real 5.630 secs (user 5.550+0.000 sys 0.070+0.000)
time: real 5.700 secs (user 5.650+0.000 sys 0.050+0.000)
time: real 5.690 secs (user 5.640+0.000 sys 0.050+0.000)
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sun, 23 Apr 2017 14:47:52 +0900 |
parents | 4ba863c88135 |
children | f4433f2713d0 |
line wrap: on
line diff
--- a/mercurial/cext/parsers.c Sun Apr 23 16:10:51 2017 +0900 +++ b/mercurial/cext/parsers.c Sun Apr 23 14:47:52 2017 +0900 @@ -702,6 +702,8 @@ "construct a dict with an expected size\n"}, {"make_file_foldmap", make_file_foldmap, METH_VARARGS, "make file foldmap\n"}, + {"jsonescapeu8fast", jsonescapeu8fast, METH_VARARGS, + "escape a UTF-8 byte string to JSON (fast path)\n"}, {"encodedir", encodedir, METH_VARARGS, "encodedir a path\n"}, {"pathencode", pathencode, METH_VARARGS, "fncache-encode a path\n"}, {"lowerencode", lowerencode, METH_VARARGS, "lower-encode a path\n"}, @@ -714,7 +716,7 @@ void manifest_module_init(PyObject *mod); void revlog_module_init(PyObject *mod); -static const int version = 1; +static const int version = 2; static void module_init(PyObject *mod) {