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()

Reply via email to