At http://bzr.arbash-meinel.com/branches/bzr/brisbane/hack2
------------------------------------------------------------
revno: 3844
revision-id: [email protected]
parent: [email protected]
committer: John Arbash Meinel <[email protected]>
branch nick: hack2
timestamp: Mon 2009-03-02 21:45:27 -0600
message:
Intern the key portions that are easily available.
This saves a modest amount of memory when processing lots of keys.
=== modified file 'bzrlib/_btree_serializer_c.pyx'
--- a/bzrlib/_btree_serializer_c.pyx 2008-09-24 04:15:03 +0000
+++ b/bzrlib/_btree_serializer_c.pyx 2009-03-03 03:45:27 +0000
@@ -38,6 +38,7 @@
Py_ssize_t PyString_GET_SIZE_ptr "PyString_GET_SIZE" (PyObject *)
char * PyString_AS_STRING_ptr "PyString_AS_STRING" (PyObject *)
int PyString_AsStringAndSize_ptr(PyObject *, char **buf, Py_ssize_t *len)
+ object PyString_InternFromString(char *)
int PyTuple_CheckExact(object t)
Py_ssize_t PyTuple_GET_SIZE(object t)
PyObject *PyTuple_GET_ITEM_ptr_object "PyTuple_GET_ITEM" (object tpl, int
index)
@@ -142,8 +143,11 @@
# TODO: Consider using PyIntern_FromString, the only caveat is that
# it assumes a NULL-terminated string, so we have to check if
# temp_ptr[0] == c'\0' or some other char.
- key_element = safe_string_from_size(self._start,
- temp_ptr - self._start)
+ if temp_ptr[0] == c'\0':
+ key_element = PyString_InternFromString(self._start)
+ else:
+ key_element = safe_string_from_size(self._start,
+ temp_ptr - self._start)
# advance our pointer
self._start = temp_ptr + 1
PyList_Append(key_segments, key_element)
=== modified file 'bzrlib/btree_index.py'
--- a/bzrlib/btree_index.py 2009-02-18 05:40:39 +0000
+++ b/bzrlib/btree_index.py 2009-03-03 03:45:27 +0000
@@ -585,7 +585,7 @@
for line in lines[2:]:
if line == '':
break
- nodes.append(tuple(line.split('\0')))
+ nodes.append(tuple(map(intern, line.split('\0'))))
return nodes
--
bazaar-commits mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/bazaar-commits