[Mesa-dev] [PATCH 14/41] glapi: use xrange instead of range in python

Dylan Baker baker.dylan.c at gmail.com
Fri Apr 1 00:04:31 UTC 2016


In python 2 range returns a new list, which is okay for very small
values, but can get quite expensive for larger lists. xrange on the
other hand is an iterator, which requires less memory and processing
power.

Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
---
 src/mapi/glapi/gen/glX_proto_size.py   |  2 +-
 src/mapi/glapi/gen/glX_server_table.py | 16 ++++++++--------
 src/mapi/glapi/gen/gl_XML.py           |  5 ++---
 src/mapi/glapi/gen/gl_apitemp.py       |  2 +-
 4 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/src/mapi/glapi/gen/glX_proto_size.py b/src/mapi/glapi/gen/glX_proto_size.py
index d8b9c21..0c0b106 100644
--- a/src/mapi/glapi/gen/glX_proto_size.py
+++ b/src/mapi/glapi/gen/glX_proto_size.py
@@ -151,7 +151,7 @@ class glx_enum_function(object):
             masked_enums = {}
             masked_count = {}
 
-            for i in range(0, mask + 1):
+            for i in xrange(0, mask + 1):
                 masked_enums[i] = "0"
                 masked_count[i] = 0
 
diff --git a/src/mapi/glapi/gen/glX_server_table.py b/src/mapi/glapi/gen/glX_server_table.py
index d1a2bb9..6443a99 100644
--- a/src/mapi/glapi/gen/glX_server_table.py
+++ b/src/mapi/glapi/gen/glX_server_table.py
@@ -35,7 +35,7 @@ import license
 
 
 def log2(value):
-    for i in range(0, 30):
+    for i in xrange(0, 30):
         p = 1 << i
         if p >= value:
             return i
@@ -46,7 +46,7 @@ def log2(value):
 def round_down_to_power_of_two(n):
     """Returns the nearest power-of-two less than or equal to n."""
 
-    for i in range(30, 0, -1):
+    for i in xrange(30, 0, -1):
         p = 1 << i
         if p <= n:
             return p
@@ -95,17 +95,17 @@ class function_table:
         next_opcode = min_opcode + (1 << remaining_bits)
         empty_children = 0
 
-        for M in range(0, remaining_bits):
+        for M in xrange(0, remaining_bits):
             op_count = 1 << (remaining_bits - M)
             child_count = 1 << M
 
             empty_children = 0
             full_children = 0
-            for i in range(min_opcode, next_opcode, op_count):
+            for i in xrange(min_opcode, next_opcode, op_count):
                 used = 0
                 empty = 0
 
-                for j in range(i, i + op_count):
+                for j in xrange(i, i + op_count):
                     if j in self.functions:
                         used += 1
                     else:
@@ -130,7 +130,7 @@ class function_table:
             count = 1
             depth = 1
             all_children_are_nonempty_leaf_nodes = 1
-            for i in range(min_opcode, next_opcode, op_count):
+            for i in xrange(min_opcode, next_opcode, op_count):
                 n = self.divide_group(i, total + M)
 
                 if not (n[1] == [] and not self.is_empty_leaf(i, n[0])):
@@ -151,7 +151,7 @@ class function_table:
                 return [M, children, count, depth]
 
     def is_empty_leaf(self, base_opcode, M):
-        for op in range(base_opcode, base_opcode + (1 << M)):
+        for op in xrange(base_opcode, base_opcode + (1 << M)):
             if op in self.functions:
                 return 0
                 break
@@ -187,7 +187,7 @@ class function_table:
 
                     print '    LEAF(%u),' % (len(self.lookup_table))
 
-                    for op in range(child_base_opcode, child_base_opcode + (1 << child_M)):
+                    for op in xrange(child_base_opcode, child_base_opcode + (1 << child_M)):
                         if op in self.functions:
                             func = self.functions[op]
                             size = func.command_fixed_length()
diff --git a/src/mapi/glapi/gen/gl_XML.py b/src/mapi/glapi/gen/gl_XML.py
index de10019..695ef7f 100644
--- a/src/mapi/glapi/gen/gl_XML.py
+++ b/src/mapi/glapi/gen/gl_XML.py
@@ -685,7 +685,7 @@ class gl_function(gl_item):
             if len(parameters) != len(self.parameters):
                 raise RuntimeError("Parameter count mismatch in %s.  Was %d, now %d." % (name, len(self.parameters), len(parameters)))
 
-            for j in range(0, len(parameters)):
+            for j in xrange(0, len(parameters)):
                 p1 = parameters[j]
                 p2 = self.parameters[j]
                 if not p1.compatible(p2):
@@ -975,9 +975,8 @@ class gl_api(object):
         classify_category.  Each iterated value is a tuple of the
         name and number (which may be None) of the category.
         """
-
         list = []
-        for cat_type in range(0,4):
+        for cat_type in xrange(0,4):
             keys = self.categories[cat_type].keys()
             keys.sort()
 
diff --git a/src/mapi/glapi/gen/gl_apitemp.py b/src/mapi/glapi/gen/gl_apitemp.py
index feb5f8e..5143ae3 100644
--- a/src/mapi/glapi/gen/gl_apitemp.py
+++ b/src/mapi/glapi/gen/gl_apitemp.py
@@ -196,7 +196,7 @@ class PrintGlOffsets(gl_XML.gl_print_base):
         print '    * when someone tries to call a dynamically-registered'
         print '    * extension function without a current rendering context.'
         print '    */'
-        for i in range(1, 100):
+        for i in xrange(1, 100):
             print '   TABLE_ENTRY(Unused),'
 
         print '};'
-- 
2.8.0



More information about the mesa-dev mailing list