4 ms·
This is a very interesting benchmark! I'd like to add a library to the comparison, which has recently been released. It's called graph-mate (https://pypi.org/p
by nerdfaktor42 4y ago
This is a very interesting benchmark! I'd like to add a library to the comparison, which has recently been released.
It's called graph-mate (https://pypi.org/project/graph-mate/ https://pypi.org/project/graph-mate/) and it's a wrapper around a Rust implementation for parallel graph algorithms (https://crates.io/crates/graph https://crates.io/crates/graph) that a friend and I work on.
We created a Jupyter notebook that loads the same Wikipedia articles and runs page rank with the same parameters: https://github.com/s1ck/graph/blob/d0a45116b1891daa39f49364727f277fd9fdf51c/crates/mate/notebooks/page-rank-wiki-graph.ipynb https://github.com/s1ck/graph/blob/d0a45116b1891daa39f493647...
We converted the memgraph dataset to an edge list: https://gist.github.com/s1ck/97e23af14b2e117fa47c713addef7517 https://gist.github.com/s1ck/97e23af14b2e117fa47c713addef751....
To reproduce, put the dataset next to the notebook.
On my machine (Ryzen 3950x, 64GB RAM) ..
memgraph takes 1285 ms
graph_mate takes 3.347 ms
I have not looked into the C++ implementation of page rank in memgraph. The Rust implementation is a pull-based Page Rank which is not uncommon in parallel graph libraries. See https://github.com/s1ck/graph/blob/036cda61e1bbf2d9ccb2b0e46a6ec221ae8f652d/crates/algos/src/page_rank.rs#L58 https://github.com/s1ck/graph/blob/036cda61e1bbf2d9ccb2b0e46... for details.
graph-mate and the Rust graph project are pretty young, we don't support that many algorithms, yet. But if people are interested in contributing, feel free to open a PR / issue :)
- katelatte 4y agoWell done on your work! It's nice to see new tools being developed in graph world, especially in Rust. I would just like to emphasize that there is a big difference between a graph database and graph algorithms library. This is a thing that has to be taken into account. Besides that, real life use cases usually include dynamic data. That's the reason why Memgraph holds a set of dynamic graph algorithms. For example, we implemented dynamic PageRank algorithm [1] which is the approximation of PageRank carrying the same information as the results of PageRank - the likelihood of random walk ending in a particular vertex. In use cases such as credit card fraud detection, dynamic graph algorithms are of a huge importance to make important decisions as fast as possible. Besides that, we have implemented a set of modules built on top of NVIDIA cuGraph [2] which provides a set of wrappers for most of the algorithms from the cuGraph repository. With GPU-powered graph analytics from Memgraph you can explore huge graphs databases and make decisions without long waits for the results. [3] [1] https://memgraph.com/docs/mage/query-modules/cpp/pagerank-online https://memgraph.com/docs/mage/query-modules/cpp/pagerank-on... [2] https://memgraph.com/docs/mage/query-modules/cuda/cugraph https://memgraph.com/docs/mage/query-modules/cuda/cugraph [3] https://developer.nvidia.com/blog/running-large-scale-graph-analytics-with-memgraph-and-nvidia-cugraph-algorithms/ https://developer.nvidia.com/blog/running-large-scale-graph-...