[graph-tool] Surprising run time increase
Tiago de Paula Peixoto
tiago at skewed.de
Tue Jun 7 19:38:45 CEST 2016
Hi François,
On 07.06.2016 11:27, François wrote:
> Hello,
>
> For experimental purpose I benchmarked the *topology.shortest_distance* run
> time. I stumbled upon something I fail to explain. In this benchmark I
> compare two graphs :
>
> (*) The first graph is undirected and has about 11M edges and 8M
> vertices;
> (*) The second graph is a copy of the first one with directed edges. In
> this graph, for each edge from the first graph the backward edge is added.
> Hence, the second graph has about 22M edge and 8M vertices.
>
> I use https://gist.github.com/Fkawala/f7a3366a0d702163d7499ce29efec78e
> <https://gist.github.com/Fkawala/f7a3366a0d702163d7499ce29efec78e> to
> measure the run time of a shortest path to all vertices within a given
> distance.
>
> With the first graph the run time is :
>
> ncalls tottime percall cumtime percall filename:lineno(function)
> 1 0.035 0.035 0.060 0.060
> graph_tool/topology/__init__.py:1272(shortest_distance)
> 1 0.000 0.000 0.019 0.019
> graph_tool/decorators.pyc:1(copy_property)
> 2/1 0.000 0.000 0.019 0.019
> graph_tool/decorators.py:126(wrapper)
> 1 0.013 0.013 0.019 0.019
> graph_tool/__init__.py:2247(copy_property)
> 10 0.000 0.000 0.011 0.001
> graph_tool/__init__.py:146(_prop)
> 8 0.000 0.000 0.011 0.001
> graph_tool/__init__.py:476(_get_any)
> 8 0.011 0.001 0.011 0.001
> graph_tool/__init__.py:893(reserve)
> 1 0.000 0.000 0.001 0.001
> graph_tool/__init__.py:2559(set_edge_filter)
> 1 0.000 0.000 0.001 0.001
> graph_tool/__init__.py:680(__set_array)
> 1 0.000 0.000 0.000 0.000
> graph_tool/__init__.py:643(get_array)
> 4 0.000 0.000 0.000 0.000
> graph_tool/__init__.py:667(_get_data)
> [truncated]
>
> With the second graph the run is :
>
> ncalls tottime percall cumtime percall filename:lineno(function)
> 1 2.347 2.347 2.372 2.372
> graph_tool/topology/__init__.py:1272(shortest_distance)
> 1 0.000 0.000 0.019 0.019
> graph_tool/decorators.pyc:1(copy_property)
> 2/1 0.000 0.000 0.019 0.019
> graph_tool/decorators.py:126(wrapper)
> 1 0.012 0.012 0.018 0.018
> graph_tool/__init__.py:2247(copy_property)
> 9 0.000 0.000 0.011 0.001
> graph_tool/__init__.py:146(_prop)
> 5 0.000 0.000 0.011 0.002
> graph_tool/__init__.py:476(_get_any)
> 5 0.011 0.002 0.011 0.002
> graph_tool/__init__.py:893(reserve)
> 1 0.001 0.001 0.001 0.001
> graph_tool/__init__.py:975(_check_prop_scalar)
> [truncated]
>
> How could we explain this difference? I there a something to do to reduce
> the run time observed with the second graph ?
This is indeed quite unexpected. Could you please provide a test graph
together with the script you sent, so I can investigate? I think one
would need to to a profiling at the C++ level (using perf) to see what
is going on.
Best,
Tiago
--
Tiago de Paula Peixoto <tiago at skewed.de>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <https://lists.skewed.de/pipermail/graph-tool/attachments/20160607/331d0892/attachment.asc>
More information about the graph-tool
mailing list