From 17ebdeb565ed4f1642f0928c3e80182864a4c92d Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Tue, 15 Mar 2011 19:10:19 +0100 Subject: [PATCH] [FIX] tools.graph: stop useless recursions to make graph_get() faster In some cases (depending on the kind of graph being rendered), the recursive processing could lead to timings of 1 minute per call to ir.ui.view.graph_get(), even for a relatively small number of nodes (e.g. 10). By avoiding useless recursions in head_component() it goes down to a few ms. This patch also adds str() wrappers for __str__ and printing of nodes labels, which are not necessarily strings (they are often integers) bzr revid: odo@openerp.com-20110315181019-3pi3j0ojg33wtv3z --- bin/tools/graph.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/bin/tools/graph.py b/bin/tools/graph.py index 05a1b8302f0..7f85bf1ba35 100644 --- a/bin/tools/graph.py +++ b/bin/tools/graph.py @@ -147,9 +147,9 @@ class graph(object): if node not in self.head_nodes: self.head_nodes.append(node) - for edge in rest_edges: - if edge[0]==node: - self.head_component(edge[1],rest_edges) + for edge in rest_edges: + if edge[0]==node: + self.head_component(edge[1],rest_edges) def process_ranking(self, node, level=0): @@ -709,7 +709,7 @@ class graph(object): for l in self.levels: result += 'PosY: ' + str(l) + '\n' for node in self.levels[l]: - result += '\tPosX: '+ str(self.result[node]['y']) + ' - Node:' + node + "\n" + result += '\tPosX: '+ str(self.result[node]['y']) + ' - Node:' + str(node) + "\n" return result @@ -772,7 +772,7 @@ if __name__=='__main__': for name,node in node_res.items(): draw.arc( (int(node['y']-radius), int(node['x']-radius),int(node['y']+radius), int(node['x']+radius) ), 0, 360, (128,128,128)) - draw.text( (int(node['y']), int(node['x'])), name, (128,128,128)) + draw.text( (int(node['y']), int(node['x'])), str(name), (128,128,128)) for t in transitions: