2 new revisions:
Revision: 3e2e54478e38
Author: Mikko Korpela <[email protected]>
Date: Sat Nov 5 12:18:44 2011
Log: ItemList: use tuple instead of a list -- small memory usages
improveme...
http://code.google.com/p/robotframework/source/detail?r=3e2e54478e38
Revision: 38683bb0363b
Author: Mikko Korpela <[email protected]>
Date: Sat Nov 5 12:24:38 2011
Log: setter: Keep the value in the instance -- 10% memory usage
reduction
http://code.google.com/p/robotframework/source/detail?r=38683bb0363b
==============================================================================
Revision: 3e2e54478e38
Author: Mikko Korpela <[email protected]>
Date: Sat Nov 5 12:18:44 2011
Log: ItemList: use tuple instead of a list -- small memory usages
improvement
http://code.google.com/p/robotframework/source/detail?r=3e2e54478e38
Modified:
/src/robot/result/model.py
/utest/result/test_resultmodel.py
=======================================
--- /src/robot/result/model.py Sat Nov 5 04:54:17 2011
+++ /src/robot/result/model.py Sat Nov 5 12:18:44 2011
@@ -343,7 +343,7 @@
def __init__(self, item_class, items=None, parent=None):
self._item_class = item_class
self._parent = parent
- self._items = []
+ self._items = ()
if items:
self.extend(items)
@@ -357,7 +357,7 @@
% (self._item_class.__name__,
type(item).__name__))
if self._parent:
item.parent = self._parent
- self._items.append(item)
+ self._items = tuple(list(self._items)+[item])
def extend(self, items):
for item in items:
=======================================
--- /utest/result/test_resultmodel.py Thu Nov 3 06:05:49 2011
+++ /utest/result/test_resultmodel.py Sat Nov 5 12:18:44 2011
@@ -231,10 +231,10 @@
def test_getitem_slice(self):
items = ItemList(int, range(10))
- assert_true(isinstance(items[1:], list))
- assert_equal(items[:], list(items))
- assert_equal(items[:-1], range(9))
- assert_equal(items[-1:1:-2], range(9, 1, -2))
+ assert_true(isinstance(items[1:], tuple))
+ assert_equal(items[:], tuple(items))
+ assert_equal(items[:-1], tuple(range(9)))
+ assert_equal(items[-1:1:-2], tuple(range(9, 1, -2)))
def test_len(self):
items = ItemList(object)
==============================================================================
Revision: 38683bb0363b
Author: Mikko Korpela <[email protected]>
Date: Sat Nov 5 12:24:38 2011
Log: setter: Keep the value in the instance -- 10% memory usage
reduction
http://code.google.com/p/robotframework/source/detail?r=38683bb0363b
Modified:
/src/robot/utils/setter.py
/utest/utils/test_setter.py
=======================================
--- /src/robot/utils/setter.py Fri Nov 4 07:35:48 2011
+++ /src/robot/utils/setter.py Sat Nov 5 12:24:38 2011
@@ -18,18 +18,18 @@
class setter(object):
def __init__(self, method):
- # TODO: using {} instead of WeakKeyDict.. seems to use less memory
- # Could we use {} with weakref keys?
- self.values = WeakKeyDictionary()
self.method = method
+ self._method_value_name = '_setter_%s_value' % self.method.__name__
def __get__(self, instance, owner):
if instance is None:
return self
try:
- return self.values[instance]
+ return getattr(instance, self._method_value_name)
except KeyError:
raise AttributeError(self.method.__name__)
def __set__(self, instance, value):
- self.values[instance] = self.method(instance, value)
+ if instance is None:
+ return
+ setattr(instance, self._method_value_name, self.method(instance,
value))
=======================================
--- /utest/utils/test_setter.py Wed Oct 26 04:15:11 2011
+++ /utest/utils/test_setter.py Sat Nov 5 12:24:38 2011
@@ -20,22 +20,6 @@
def test_notset(self):
assert_raises(AttributeError, getattr, Example(), 'attr')
- def test_references_are_cleared(self):
- e = Example()
- f = Example()
- self._assert_references({})
- e.attr = 1
- f.attr = 2
- self._assert_references({e: 2, f: 4})
- e.attr = 3
- del f
- self._assert_references({e: 6})
- del e
- self._assert_references({})
-
- def _assert_references(self, expected):
- assert_equal(dict(Example.attr.values), expected)
-
if __name__ == '__main__':
unittest.main()