Mercurial > hg
annotate tests/test-mq-qsave.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 | 55c6ebd11cb9 |
children |
rev | line source |
---|---|
12324
b701610f6c56
tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents:
2990
diff
changeset
|
1 $ echo "[extensions]" >> $HGRCPATH |
b701610f6c56
tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents:
2990
diff
changeset
|
2 $ echo "mq=" >> $HGRCPATH |
2817
ff3edd1c1e27
Add basic qsave/qrestore test.
Brendan Cully <brendan@kublai.com>
parents:
diff
changeset
|
3 |
49621
55c6ebd11cb9
tests: run many tests in $TESTTMP/repo instead of $TESTTMP
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
12324
diff
changeset
|
4 $ hg init repo |
55c6ebd11cb9
tests: run many tests in $TESTTMP/repo instead of $TESTTMP
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
12324
diff
changeset
|
5 $ cd repo |
2817
ff3edd1c1e27
Add basic qsave/qrestore test.
Brendan Cully <brendan@kublai.com>
parents:
diff
changeset
|
6 |
12324
b701610f6c56
tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents:
2990
diff
changeset
|
7 $ echo 'base' > base |
b701610f6c56
tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents:
2990
diff
changeset
|
8 $ hg ci -Ambase |
b701610f6c56
tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents:
2990
diff
changeset
|
9 adding base |
2817
ff3edd1c1e27
Add basic qsave/qrestore test.
Brendan Cully <brendan@kublai.com>
parents:
diff
changeset
|
10 |
12324
b701610f6c56
tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents:
2990
diff
changeset
|
11 $ hg qnew -mmqbase mqbase |
2817
ff3edd1c1e27
Add basic qsave/qrestore test.
Brendan Cully <brendan@kublai.com>
parents:
diff
changeset
|
12 |
12324
b701610f6c56
tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents:
2990
diff
changeset
|
13 $ hg qsave |
b701610f6c56
tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents:
2990
diff
changeset
|
14 $ hg qrestore 2 |
b701610f6c56
tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents:
2990
diff
changeset
|
15 restoring status: hg patches saved state |
b701610f6c56
tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents:
2990
diff
changeset
|
16 |