summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBob Foerster <robert@erafx.com>2010-11-20 04:39:22 +0800
committerChris Larson <chris_larson@mentor.com>2010-11-21 11:18:02 -0700
commit73b40f06444cb877a5960b2aa66abf7dacbd88f0 (patch)
tree8d64099dfdd2d8a40a4b95276232adef81dacba6
parentbc0e147762769659b025b650b6b8da01ecf2248c (diff)
downloadbitbake-73b40f06444cb877a5960b2aa66abf7dacbd88f0.tar.gz
Prefer xrange over range for small performance gain.
range() allocates an actual list when called. xrange() is just an iterator and creates the next range item on demand. This provides a slight performance increase. In python 3, range will do what xrange does currently, but the upgrade will be handled by the 2to3 tool. Signed-off-by: Bob Foerster <robert@erafx.com>
-rw-r--r--lib/bb/cooker.py2
-rw-r--r--lib/bb/runqueue.py42
-rw-r--r--lib/bb/taskdata.py8
-rw-r--r--lib/bb/utils.py10
4 files changed, 31 insertions, 31 deletions
diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index 2281600d5..355a54961 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -288,7 +288,7 @@ class BBCooker:
depend_tree["rdepends-pkg"] = {}
depend_tree["rrecs-pkg"] = {}
- for task in range(len(rq.runq_fnid)):
+ for task in xrange(len(rq.runq_fnid)):
taskname = rq.runq_task[task]
fnid = rq.runq_fnid[task]
fn = taskdata.fn_index[fnid]
diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
index dbbd55567..3f527ad6a 100644
--- a/lib/bb/runqueue.py
+++ b/lib/bb/runqueue.py
@@ -97,7 +97,7 @@ class RunQueueScheduler(object):
"""
Return the id of the first task we find that is buildable
"""
- for tasknum in range(len(self.rq.runq_fnid)):
+ for tasknum in xrange(len(self.rq.runq_fnid)):
taskid = self.prio_map[tasknum]
if self.rq.runq_running[taskid] == 1:
continue
@@ -229,7 +229,7 @@ class RunQueue:
return "%s, %s" % (fn, taskname)
def get_task_id(self, fnid, taskname):
- for listid in range(len(self.runq_fnid)):
+ for listid in xrange(len(self.runq_fnid)):
if self.runq_fnid[listid] == fnid and self.runq_task[listid] == taskname:
return listid
return None
@@ -251,7 +251,7 @@ class RunQueue:
"""
lowest = 0
new_chain = []
- for entry in range(len(chain)):
+ for entry in xrange(len(chain)):
if chain[entry] < chain[lowest]:
lowest = entry
new_chain.extend(chain[lowest:])
@@ -264,7 +264,7 @@ class RunQueue:
"""
if len(chain1) != len(chain2):
return False
- for index in range(len(chain1)):
+ for index in xrange(len(chain1)):
if chain1[index] != chain2[index]:
return False
return True
@@ -335,7 +335,7 @@ class RunQueue:
deps_left = []
task_done = []
- for listid in range(numTasks):
+ for listid in xrange(numTasks):
task_done.append(False)
weight.append(0)
deps_left.append(len(self.runq_revdeps[listid]))
@@ -359,7 +359,7 @@ class RunQueue:
# Circular dependency sanity check
problem_tasks = []
- for task in range(numTasks):
+ for task in xrange(numTasks):
if task_done[task] is False or deps_left[task] != 0:
problem_tasks.append(task)
logger.debug(2, "Task %s (%s) is not buildable\n", task, self.get_user_idstring(task))
@@ -437,7 +437,7 @@ class RunQueue:
if taskid is not None:
depends.append(taskid)
- for task in range(len(taskData.tasks_name)):
+ for task in xrange(len(taskData.tasks_name)):
depends = []
recrdepends = []
fnid = taskData.tasks_fnid[task]
@@ -527,7 +527,7 @@ class RunQueue:
# Algorithm is O(tasks) + O(tasks)*O(fnids)
#
reccumdepends = {}
- for task in range(len(self.runq_fnid)):
+ for task in xrange(len(self.runq_fnid)):
fnid = self.runq_fnid[task]
if fnid not in reccumdepends:
if fnid in tdepends_fnid:
@@ -535,7 +535,7 @@ class RunQueue:
else:
reccumdepends[fnid] = set()
reccumdepends[fnid].update(self.runq_depends[task])
- for task in range(len(self.runq_fnid)):
+ for task in xrange(len(self.runq_fnid)):
taskfnid = self.runq_fnid[task]
for fnid in reccumdepends:
if task in reccumdepends[fnid]:
@@ -548,7 +548,7 @@ class RunQueue:
#
# e.g. do_sometask[recrdeptask] = "do_someothertask"
# (makes sure sometask runs after someothertask of all DEPENDS, RDEPENDS and intertask dependencies, recursively)
- for task in range(len(self.runq_fnid)):
+ for task in xrange(len(self.runq_fnid)):
if len(runq_recrdepends[task]) > 0:
taskfnid = self.runq_fnid[task]
for dep in reccumdepends[taskfnid]:
@@ -617,7 +617,7 @@ class RunQueue:
maps = []
delcount = 0
- for listid in range(len(self.runq_fnid)):
+ for listid in xrange(len(self.runq_fnid)):
if runq_build[listid-delcount] == 1:
maps.append(listid-delcount)
else:
@@ -644,7 +644,7 @@ class RunQueue:
# Remap the dependencies to account for the deleted tasks
# Check we didn't delete a task we depend on
- for listid in range(len(self.runq_fnid)):
+ for listid in xrange(len(self.runq_fnid)):
newdeps = []
origdeps = self.runq_depends[listid]
for origdep in origdeps:
@@ -656,14 +656,14 @@ class RunQueue:
logger.verbose("Assign Weightings")
# Generate a list of reverse dependencies to ease future calculations
- for listid in range(len(self.runq_fnid)):
+ for listid in xrange(len(self.runq_fnid)):
for dep in self.runq_depends[listid]:
self.runq_revdeps[dep].add(listid)
# Identify tasks at the end of dependency chains
# Error on circular dependency loops (length two)
endpoints = []
- for listid in range(len(self.runq_fnid)):
+ for listid in xrange(len(self.runq_fnid)):
revdeps = self.runq_revdeps[listid]
if len(revdeps) == 0:
endpoints.append(listid)
@@ -690,7 +690,7 @@ class RunQueue:
# Sanity Check - Check for multiple tasks building the same provider
prov_list = {}
seen_fn = []
- for task in range(len(self.runq_fnid)):
+ for task in xrange(len(self.runq_fnid)):
fn = taskData.fn_index[self.runq_fnid[task]]
if fn in seen_fn:
continue
@@ -736,7 +736,7 @@ class RunQueue:
if self.stamppolicy == "whitelist":
stampwhitelist = self.self.stampfnwhitelist
- for task in range(len(self.runq_fnid)):
+ for task in xrange(len(self.runq_fnid)):
unchecked[task] = ""
if len(self.runq_depends[task]) == 0:
buildable.append(task)
@@ -751,7 +751,7 @@ class RunQueue:
if revdep in unchecked:
buildable.append(revdep)
- for task in range(len(self.runq_fnid)):
+ for task in xrange(len(self.runq_fnid)):
if task not in unchecked:
continue
fn = self.taskData.fn_index[self.runq_fnid[task]]
@@ -910,7 +910,7 @@ class RunQueue:
self.failed_fnids = []
# Mark initial buildable tasks
- for task in range(self.stats.total):
+ for task in xrange(self.stats.total):
self.runq_running.append(0)
self.runq_complete.append(0)
if len(self.runq_depends[task]) == 0:
@@ -1010,7 +1010,7 @@ class RunQueue:
return
# Sanity Checks
- for task in range(self.stats.total):
+ for task in xrange(self.stats.total):
if self.runq_buildable[task] == 0:
logger.error("Task %s never buildable!", task)
if self.runq_running[task] == 0:
@@ -1130,7 +1130,7 @@ class RunQueue:
Dump some debug information on the internal data structures
"""
logger.debug(3, "run_tasks:")
- for task in range(len(self.runq_task)):
+ for task in xrange(len(self.runq_task)):
logger.debug(3, " (%s)%s - %s: %s Deps %s RevDeps %s", task,
taskQueue.fn_index[self.runq_fnid[task]],
self.runq_task[task],
@@ -1139,7 +1139,7 @@ class RunQueue:
self.runq_revdeps[task])
logger.debug(3, "sorted_tasks:")
- for task1 in range(len(self.runq_task)):
+ for task1 in xrange(len(self.runq_task)):
if task1 in self.prio_map:
task = self.prio_map[task1]
logger.debug(3, " (%s)%s - %s: %s Deps %s RevDeps %s", task,
diff --git a/lib/bb/taskdata.py b/lib/bb/taskdata.py
index dc8d0668c..fdd55ee83 100644
--- a/lib/bb/taskdata.py
+++ b/lib/bb/taskdata.py
@@ -493,7 +493,7 @@ class TaskData:
dependees = self.get_dependees(targetid)
for fnid in dependees:
self.fail_fnid(fnid, missing_list)
- for taskid in range(len(self.tasks_idepends)):
+ for taskid in xrange(len(self.tasks_idepends)):
idepends = self.tasks_idepends[taskid]
for (idependid, idependtask) in idepends:
if idependid == targetid:
@@ -558,7 +558,7 @@ class TaskData:
logger.debug(3, ", ".join(self.run_names_index))
logger.debug(3, "build_targets:")
- for buildid in range(len(self.build_names_index)):
+ for buildid in xrange(len(self.build_names_index)):
target = self.build_names_index[buildid]
targets = "None"
if buildid in self.build_targets:
@@ -566,7 +566,7 @@ class TaskData:
logger.debug(3, " (%s)%s: %s", buildid, target, targets)
logger.debug(3, "run_targets:")
- for runid in range(len(self.run_names_index)):
+ for runid in xrange(len(self.run_names_index)):
target = self.run_names_index[runid]
targets = "None"
if runid in self.run_targets:
@@ -574,7 +574,7 @@ class TaskData:
logger.debug(3, " (%s)%s: %s", runid, target, targets)
logger.debug(3, "tasks:")
- for task in range(len(self.tasks_name)):
+ for task in xrange(len(self.tasks_name)):
logger.debug(3, " (%s)%s - %s: %s",
task,
self.fn_index[self.tasks_fnid[task]],
diff --git a/lib/bb/utils.py b/lib/bb/utils.py
index 0c2cccbc6..19ca45d80 100644
--- a/lib/bb/utils.py
+++ b/lib/bb/utils.py
@@ -194,10 +194,10 @@ def vercmp_string(val1, val2):
val2 = val2[0].split('.')
# add back decimal point so that .03 does not become "3" !
- for x in range(1, len(val1)):
+ for x in xrange(1, len(val1)):
if val1[x][0] == '0' :
val1[x] = '.' + val1[x]
- for x in range(1, len(val2)):
+ for x in xrange(1, len(val2)):
if val2[x][0] == '0' :
val2[x] = '.' + val2[x]
@@ -214,10 +214,10 @@ def vercmp_string(val1, val2):
val2[-1] += '_' + val2_prepart
# The above code will extend version numbers out so they
# have the same number of digits.
- for x in range(0, len(val1)):
+ for x in xrange(0, len(val1)):
cmp1 = relparse(val1[x])
cmp2 = relparse(val2[x])
- for y in range(0, 3):
+ for y in xrange(0, 3):
myret = cmp1[y] - cmp2[y]
if myret != 0:
__vercmp_cache__[valkey] = myret
@@ -298,7 +298,7 @@ def _print_trace(body, line):
logger.error("Printing the environment of the function")
min_line = max(1, line-4)
max_line = min(line + 4, len(body)-1)
- for i in range(min_line, max_line + 1):
+ for i in xrange(min_line, max_line + 1):
logger.error("\t%.4d:%s", i, body[i-1])