Commit df7fc9dd authored by Antoine Pitrou's avatar Antoine Pitrou

Issue #12778: Reduce memory consumption when JSON-encoding a large container of many small objects.

parent 9bb6dfe0
from io import StringIO
from test.json_tests import PyTest, CTest
from test.support import precisionbigmemtest, _1G
class TestDump:
def test_dump(self):
......@@ -21,4 +22,20 @@ class TestDump:
class TestPyDump(TestDump, PyTest): pass
class TestCDump(TestDump, CTest): pass
class TestCDump(TestDump, CTest):
# The size requirement here is hopefully over-estimated (actual
# memory consumption depending on implementation details, and also
# system memory management, since this may allocate a lot of
# small objects).
@precisionbigmemtest(size=_1G, memuse=1)
def test_large_list(self, size):
N = int(30 * 1024 * 1024 * (size / _1G))
l = [1] * N
encoded = self.dumps(l)
self.assertEqual(len(encoded), N * 3)
self.assertEqual(encoded[:1], "[")
self.assertEqual(encoded[-2:], "1]")
self.assertEqual(encoded[1:-2], "1, " * (N - 1))
......@@ -262,6 +262,9 @@ Core and Builtins
Library
-------
- Issue #12778: Reduce memory consumption when JSON-encoding a large
container of many small objects.
- Issue #12650: Fix a race condition where a subprocess.Popen could leak
resources (FD/zombie) when killed at the wrong time.
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment