Hi Elliott, I know that the get_array is very efficient but the thing is I
have to know exactly what are the edges I am dealing with.

To be more precise, I run loops over the shortest paths which I computed
before and stored in a file. Therefore, each iteration makes access to a
tiny fraction of the network and I must keep track of the edges involved.
That is why I was giving the example of single access instead of global one
though .a.

Best,
F.
On 16 Jul 2014 22:04, "..." <[email protected]> wrote:

> You know you can get the edges, vertices, and property maps as numpy
> arrays by using the .a method. You should be able to do whatever you need
> much faster with arrays than dictionaries.
> On Jul 16, 2014 3:50 AM, "Flavien Lambert" <[email protected]> wrote:
>
>>  Hi everyone, to compute some functions I needed to loop over a bunch of
>> edges. I realized that the call to property maps seems slow compare to a
>> dictionary. I am a bit surprised since I was told - I am not an expert in
>> python - that a query in a dictionary was already. So I was wondering if I
>> made a mistake in using graph_tool. Following is an example of comparison.
>> Best,
>> F.
>>
>>
>> In [3]:
>>
>>
>> _network = gt.load_graph(_dataFolder + 'networkLTA-2.0-scc.xml')
>>
>>
>> _network = gt.load_graph(_dataFolder + 'networkLTA-2.0-scc.xml')
>>
>>  In [4]:
>>
>>
>> _network.list_properties()
>>
>>
>>
>> destination    (vertex)  (type: long double)
>> _graphml_vertex_id (vertex)  (type: string)
>> origin         (vertex)  (type: long double)
>> _graphml_edge_id (edge)    (type: string)
>> speed          (edge)    (type: long double)
>> name           (edge)    (type: string)
>> time           (edge)    (type: long double)
>>
>> In [5]:
>>
>>
>> _edgeIds = _network.edge_properties['_graphml_edge_id']
>>
>>
>> _times = _network.edge_properties["time"]
>>
>>
>> _speeds = _network.edge_properties["speed"]
>>
>>
>>
>>
>>
>>
>> _origin = _network.vertex_properties['origin']
>>
>>
>> _destination = _network.vertex_properties['destination']
>>
>>  In [8]:
>>
>>
>> _edges = [_e for _e in _network.edges()]
>>
>>
>> %time for _e in _network.edges() : a = _speeds[_e]
>>
>>
>>
>>
>>
>>
>> _speedDict = {}
>>
>>
>> for _e in _edges :
>>
>>
>>
>>     _speedDict[_network.edge_index[_e]] = _speeds[_e]
>>
>>
>> _indexes = [_network.edge_index[_e] for _e in _network.edges()]
>>
>>
>> %time for _n in _indexes : a = _speedDict[_n]
>>
>>
>>
>> CPU times: user 102 ms, sys: 5 ms, total: 107 ms
>> Wall time: 103 ms
>> CPU times: user 2 ms, sys: 0 ns, total: 2 ms
>> Wall time: 1.94 ms
>>
>>
>> _______________________________________________
>> graph-tool mailing list
>> [email protected]
>> http://lists.skewed.de/mailman/listinfo/graph-tool
>>
>>
> _______________________________________________
> graph-tool mailing list
> [email protected]
> http://lists.skewed.de/mailman/listinfo/graph-tool
>
>
_______________________________________________
graph-tool mailing list
[email protected]
http://lists.skewed.de/mailman/listinfo/graph-tool

Reply via email to