Mercurial > hg
view tests/test-check-pyflakes.t @ 50400:95acba2c29f6
encoding: avoid quadratic time complexity when json-encoding non-UTF8 strings
Apparently the code uses "+=" with a bytes object, which is linear-time, so the
whole encoding is quadratic-time. This patch makes us use a bytearray object,
instead, which has a(n amortized-)constant-time append operation.
The encoding is still not particularly fast, but at least a 10MB file
takes tens of seconds, not many hours to encode.
author | Arseniy Alekseyev <aalekseyev@janestreet.com> |
---|---|
date | Mon, 06 Mar 2023 11:27:57 +0000 |
parents | 44b26349127b |
children | 43602c675b4f |
line wrap: on
line source
#require test-repo pyflakes hg10 $ . "$TESTDIR/helpers-testrepo.sh" run pyflakes on all tracked files ending in .py or without a file ending (skipping binary file random-seed) $ cat > test.py <<EOF > print(undefinedname) > EOF $ "$PYTHON" -m pyflakes test.py 2>/dev/null | "$TESTDIR/filterpyflakes.py" test.py:1:* undefined name 'undefinedname' (glob) $ cd "`dirname "$TESTDIR"`" $ testrepohg locate 'set:**.py or grep("^#!.*python")' \ > -X hgext/fsmonitor/pywatchman \ > -X contrib/python-zstandard \ > -X mercurial/thirdparty \ > 2>/dev/null \ > | xargs "$PYTHON" -m pyflakes 2>/dev/null | "$TESTDIR/filterpyflakes.py" contrib/perf.py:*:* undefined name 'xrange' (glob) (?) mercurial/pycompat.py:*:* 'codecs' imported but unused (glob) mercurial/pycompat.py:*:* 'concurrent.futures' imported but unused (glob) mercurial/pycompat.py:*:* 'http.client as httplib' imported but unused (glob) mercurial/pycompat.py:*:* 'http.cookiejar as cookielib' imported but unused (glob) mercurial/pycompat.py:*:* 'io' imported but unused (glob) mercurial/pycompat.py:*:* 'queue' imported but unused (glob) mercurial/pycompat.py:*:* 'socketserver' imported but unused (glob) mercurial/pycompat.py:*:* 'xmlrpc.client as xmlrpclib' imported but unused (glob) mercurial/util.py:*:* 'pickle' imported but unused (glob)