[Erp5-report] r32737 nicolas.dumazet - /erp5/trunk/products/ERP5Type/XMLMatrix.py

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Feb 18 10:35:36 CET 2010


Author: nicolas.dumazet
Date: Thu Feb 18 10:35:25 2010
New Revision: 32737

URL: http://svn.erp5.org?rev=32737&view=rev
Log:
use a set to avoid linear list lookups

Modified:
    erp5/trunk/products/ERP5Type/XMLMatrix.py

Modified: erp5/trunk/products/ERP5Type/XMLMatrix.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/XMLMatrix.py?rev=32737&r1=32736&r2=32737&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/XMLMatrix.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/XMLMatrix.py [utf8] Thu Feb 18 10:35:25 2010
@@ -635,7 +635,7 @@
         Constraint API.
       """
       # Check useless cells
-      to_delete = []
+      to_delete_set = set()
       error_list = []
       def addError(message):
         if fixit:
@@ -679,8 +679,7 @@
             if not self.index.has_key(base_id):
               # The matrix does not have this base_id
               addError("There is no index for base_id %s" % base_id)
-              if object_id not in to_delete:
-                to_delete.append(object_id)
+              to_delete_set.add(object_id)
             else:
               # Check empty indices.
               empty_list = []
@@ -698,17 +697,15 @@
               if len(object_id_split) != (len_id + base_id_len): # +1 for the quantity
                 addError("Dimension of cell is %s but should be %s" % (len(object_id_split)
                                                                             - base_id_len, len_id))
-                if object_id not in to_delete:
-                  to_delete.append(object_id)
+                to_delete_set.add(object_id)
               else :
                 for i in range(len_id):
                   if int(object_id_split[i+base_id_len]) >= len(self.index[base_id][i]):
                     addError("Cell %s is out of bound" % object_id)
-                    if object_id not in to_delete:
-                      to_delete.append(object_id)
-
-      if fixit and len(to_delete) > 0:
-        self.manage_delObjects(to_delete)
+                    to_delete_set.add(object_id)
+
+      if fixit and len(to_delete_set) > 0:
+        self.manage_delObjects(list(to_delete_set))
 
       return error_list
 




More information about the Erp5-report mailing list