Mercurial > hg
comparison mercurial/cext/charencode.h @ 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 | a22339d389d4 |
children | f4433f2713d0 |
comparison
equal
deleted
inserted
replaced
33924:b9101467d88b | 33925:2c37f9dabc32 |
---|---|
20 | 20 |
21 PyObject *unhexlify(const char *str, Py_ssize_t len); | 21 PyObject *unhexlify(const char *str, Py_ssize_t len); |
22 PyObject *asciilower(PyObject *self, PyObject *args); | 22 PyObject *asciilower(PyObject *self, PyObject *args); |
23 PyObject *asciiupper(PyObject *self, PyObject *args); | 23 PyObject *asciiupper(PyObject *self, PyObject *args); |
24 PyObject *make_file_foldmap(PyObject *self, PyObject *args); | 24 PyObject *make_file_foldmap(PyObject *self, PyObject *args); |
25 PyObject *jsonescapeu8fast(PyObject *self, PyObject *args); | |
25 | 26 |
26 static const int8_t hextable[256] = { | 27 static const int8_t hextable[256] = { |
27 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | 28 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
28 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | 29 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
29 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | 30 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |