Mercurial > hg
view tests/test-issue6642.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 | 2f326ea19fbc |
children | 7e5be4a7cda7 |
line wrap: on
line source
hg log --debug shouldn't show different data than {file_*} template keywords https://bz.mercurial-scm.org/show_bug.cgi?id=6642 $ hg init issue6642 $ cd issue6642 $ echo a > a $ hg ci -qAm a $ echo b > b $ hg ci -qAm b $ hg up 0 -q $ echo c > c $ hg ci -qAm c $ hg merge -q $ hg ci -m merge $ hg log -GT '{rev} {desc} file_adds: [{file_adds}], file_mods: [{file_mods}], file_dels: [{file_dels}], files: [{files}]\n' @ 3 merge file_adds: [], file_mods: [], file_dels: [], files: [] |\ | o 2 c file_adds: [c], file_mods: [], file_dels: [], files: [c] | | o | 1 b file_adds: [b], file_mods: [], file_dels: [], files: [b] |/ o 0 a file_adds: [a], file_mods: [], file_dels: [], files: [a] $ hg log -r . --debug | grep files [1] $ hg log -r . --debug -T json | egrep '(added|removed|modified)' "added": [], "modified": [], "removed": [], $ hg log -r . --debug -T xml | grep path <paths> </paths>