Mercurial > hg
view tests/test-convert-svn-tags.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 | 7a9cbb315d84 |
children |
line wrap: on
line source
#require svn svn-bindings $ cat >> $HGRCPATH <<EOF > [extensions] > convert = > EOF $ svnadmin create svn-repo $ svnadmin load -q svn-repo < "$TESTDIR/svn/tags.svndump" Convert $ hg convert --datesort svn-repo A-hg initializing destination A-hg repository scanning source... sorting... converting... 5 init projA 4 adda 3 changea 2 changea2 1 changea3 0 changea updating tags $ cd A-hg $ hg log -G --template '{rev} {desc|firstline} tags: {tags}\n' o 6 update tags tags: tip | o 5 changea tags: trunk.goodtag | o 4 changea3 tags: | o 3 changea2 tags: trunk.v1 | o 2 changea tags: | o 1 adda tags: | o 0 init projA tags: $ hg tags -q tip trunk.goodtag trunk.v1 $ cd .. Convert without tags $ hg convert --datesort --config convert.svn.tags= svn-repo A-notags-hg initializing destination A-notags-hg repository scanning source... sorting... converting... 5 init projA 4 adda 3 changea 2 changea2 1 changea3 0 changea $ hg -R A-notags-hg tags -q tip