Mercurial > hg
view tests/test-extensions-wrapfunction.py.out @ 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 | 82bd4c5a81e5 |
children |
line wrap: on
line source
wrap 0: [0, 'orig'] wrap 1: [1, 0, 'orig'] wrap 2: [2, 1, 0, 'orig'] wrap 3: [3, 2, 1, 0, 'orig'] wrap 4: [4, 3, 2, 1, 0, 'orig'] wrap 0: [0, 4, 3, 2, 1, 0, 'orig'] unwrap 3: 3: [0, 4, 2, 1, 0, 'orig'] unwrap -: 0: [4, 2, 1, 0, 'orig'] unwrap 0: 0: [4, 2, 1, 'orig'] unwrap 4: 4: [2, 1, 'orig'] unwrap 0: -: ValueError unwrap 2: 2: [1, 'orig'] unwrap 1: 1: ['orig'] unwrap -: -: IndexError context manager ['orig'] context manager [1, 'orig'] context manager [0, 1, 'orig'] context manager [2, 0, 1, 'orig'] context manager [2, 1, 'orig'] context manager [2, 'orig'] wrap callable object [0, 'orig']