流行图形/网络包基准

5月4日,二千零一十九
通过

(本文首次发表于 关于拟线性沉思,并对 188bet appR博主

在本文中,我对5个流行的图形/网络包的性能进行了基准测试。这是由我提出的两个问题引起的:

  1. 最近,我一直在处理大型网络(数百万个顶点和边),经常想知道目前最适合扩展和处理大型网络分析任务的软件包/工具是什么。尝试了一些(python中的networkx和r中的igraph),但遇到了不同的问题,我想做一个面对面的比较会很好。

  2. 如今,随着云计算的发展,虚拟机的可用性可以很容易地实现,因此运行大规模计算也变得更加容易。我认为强大的单台机器的趋势将消除对企业集群的大量需求,因此我们将很有兴趣看到我们可以使用优化算法将单台机器推进多远。1个

为了复制基准研究和完整代码,请参照我的Github存储库.有关如何安装和安装软件包的说明也位于存储库中。

安装程序

基准测试是使用Google Compute N1-Standard-16实例(16VCPU Haswell 2.3GHz,60 GB内存)。我比较了5种不同的包装:

NETWorkX是用Python编写的,而其他四个包是基于C/C++的,但有Python API。igraph也有一个r和mathematica绑定,但是为了保持一致,下面的基准是基于python的。其他3个库(snap,networkit和graph工具)更加注重性能,内置了多处理功能。

选择要比较的任务并不是一个简单的任务,每个包都提供各种工具和功能。最后,我决定把重点放在5个具体问题上:

  • 加载数据
  • 单源最短路径
  • 页面排名
  • k-核解析
  • 强连接组件

加载更多的是一个I/O任务,而其他4个是常见的图形算法。

3个数据集斯坦福大型网络数据集在练习中使用:

虽然根据算法的运行时对包进行排序是最容易的,这只是一个很好的包装的众多考虑因素之一。我试图根据我对这些软件包的经验提供一个更主观的观点。

结果

报告的所有计时都将正常化,以反映任务的单个运行的运行时间。

NetworkX比其他任何库都慢得多。在所有计算任务和所有数据集中,它比最慢的图书馆。例如,与networkit(下一个最慢的)6.8秒相比,pockec数据集上运行单源最短路径问题花费了67秒。页面排名运行时间超过10分钟,而IGraph运行时间为1分钟。因此,我把它从比较图中删去了。

以下是其余四个包的运行时间:

从下表可以看到完整的结果:

数据集 算法 图形工具 图解 网络IT 网络X 按扣
亚马逊 连接的组件 0.09分 0.48分 0.21分 5.94条 零点四零
亚马逊 k-核 零点一一 零点三三 零点零一 八点六二 零点四二
亚马逊 加载 零点七九 3.27条 9.96岁 一点九零
亚马逊 页面排名 0.05分 一点五九 零点零一 二十五点七一 零点九零
亚马逊 最短路径 零点零六 0.12分 0.32分 3.31条 零点一四
谷歌 连接的组件 0.32分 二点二三 零点六五 二十一点七一 二点零二
谷歌 k-核 零点五七 一点六八 零点零六 153.21页 一点五七
谷歌 加载 六十七点二七 五点五一 十七点九四 39.69元 九点零三
谷歌 页面排名 零点七六 五点二四 0.12分 一百零六点四九 四点一六
谷歌 最短路径 零点二零 0.69分 0.98分 十二点三三 零点三零
波克 连接的组件 一点三五 十七点七五 四点六九 一百零八点零七 十五点二八
波克 k-核 五点七三 十点八七 0.34分 649.81元 八点八七
波克 加载 119.57美元 34.53美元 一百五十七点六一 237.72美元 五十九点七五
波克 页面排名 一点七四 五十九点五五 零点二零 六百一十一点二四 十九点五二
波克 最短路径 0.86元 零点八七 6.87条 六十七点一五 三点零九

输入输出

看看上面的情节,图形工具和网络比其他两个库加载数据的速度慢得多。我以制表符分隔的文件和图形工具的形式读取数据集,基本上使用Python代码来解析输入。其他3个包应该使用C库来读取文件,这样可以获得更好的性能。

算法

networkit和graph tool在大多数测试中占据首位,其中graph tool对于单一源最短路径和连接组件问题的运行时间最短,networkit赢得了k-core和page rank的竞争。

当网络速度很快时,它非常快。在pockec数据集中,只需0.2秒就可以运行页面排名算法(图形工具:1.7秒,制图:55.6S,SNAP:19.5s)。对于K核分解,它的速度比所有其他竞争对手快10倍,比NetworkX快2000倍。这与他们的研究论文的发现是一致的,他们声称使用一些最新的最先进的算法使他们的处理速度更快了一个数量级。然而,对于最短路径问题(在他们的论文中没有分析),它落后于所有其他包。5个

图形工具是最稳定的执行者,在所有四个任务中都实现了令人印象深刻的性能。有了OpenMP支持,它可以更好地完成所有任务。比这两个包裹快3到10倍。

igraph和snap在所有任务中都实现了几乎相似的性能,并且有一点接近snap的优势。这也与SNAP的研究结果一致。

其他注意事项

当从networkx或igraph切换到一个图形工具或networkit时,还有其他重要的考虑。

包装
第一,可用的算法在软件包中差异很大。有兴趣切换到其中一个包的用户应该阅读可用功能列表上的文档。例如,虽然它们都包含操作网络所需的基本工具,图工具没有更常见的模块化聚类工具,但在使用随机块模型的图的统计推断上具有额外的功能。

可视化网络也是分析工具链的重要组成部分。IGraph实现了相当多的布局算法,并使用cairo库呈现它们。snap支持graphviz,而graph工具同时支持graphviz和cairo。NetworkIt采用不同的方法,依靠NetworkX绘制,同时通过其流式插件提供与Gephi的支持和集成。

美国石油学会
远离原生的python或r意味着包的语法有时会非常复杂。我比较下面最短路径问题的语法。在networkx中编写它会像这样:

nx.最短路径长度(g,诺迪德)

图解:

g.最短路径([g.vs[节点索引]])

图形工具:

最短距离(g,G.顶点(节点索引)

网络IT:

距离,BFS(G,节点_index.run()

按扣:

nidtodisth=snap.tinth()snap.getshortpath(g,诺德指数尼多迪斯,真的)

最重要的是,我发现snap是最麻烦的,因为在运行它之前必须定义一个额外的变量(使用正确的变量类型)来存储结果。在图形工具和网络上运行更高级的函数还需要用户预先定义具有正确类型的变量来存储结果。

支持和文档
当用户希望在实际的项目设置中使用项目时,用户支持和文档是非常重要的。到目前为止,NetworkX是这一类别的赢家,拥有超过4K的GitHub Stars和GitHub和StackOverflow中记录的许多问题。伊格尔夫在不同的模块上也有超过一千颗星星,这是一个不错的博览会。

图形工具和网络虽然创建者似乎对用户问题有相对的反应,而且软件包也在积极的开发中,但它的关注度却小得多。

快照上次更新于2018年7月,但仍然只支持python 2.7.x版本。

结论

总体而言,我对这些库的性能感到惊喜,特别是图形工具和网络工具,并计划与它们进一步合作。事实上,它们轻而易举地通过pockec数据集是一个好迹象,但是,在计算变慢或内存问题开始出现之前,找出限制是什么是很有趣的。

关于应该学习哪些套餐的建议,我认为选择NetworkX仍然很重要,因为它使网络科学非常容易通过各种工具和功能访问。如果分析开始太慢(也许这就是你来这里的原因),那么我建议你看一下图形工具或网络,看看它们是否包含满足你需求的必要算法。


  1. 一台拥有64个VCPUS的240GB机器目前在谷歌云计算上每月的成本约为15000美元。金宝搏网址虽然相对昂贵,人们可以为非常繁重的计算任务旋转机器,一旦任务完成就关闭它。这种曾经为企业和研究机构保留的密集计算现在几乎可以被任何人复制。γ

  2. 免责声明:我尽量为每个算法指定相同的参数,但是包之间的API差异可能会转化为算法运行方式和最终输出的实际差异。γ

  3. 在试运行了1次之后,使用networkx库时,我只运行了10倍的分析测试。γ

  4. 图形工具应该更快地从其他文件类型(如graphml或dot)读取数据,尽管我实际上没有尝试过。γ

  5. 我使用BFS搜索来代理单一源最短路径问题,因为似乎没有直接的API调用。γ

  6. 我想这是像C和C++这样的静态类型语言所需要的。γ

留下评论作者,请关注他们博客上的链接和评论: 关于拟线性沉思.

188bet appr-bloggers.com网站提供 每日电子邮件更新金宝搏网址 R新闻与 教程关于以下主题: 数据科学大数据, r作业,可视化(可视化) GGPROTT2箱形图地图动画),请程序设计(程序) 演播室斯威夫特乳胶SQL日食吉特Hadoop公司刮网)统计学( 回归主成分分析时间序列交易)还有更多…



如果你走这么远,为什么不 订阅更新 从站点?选择您的口味: 电子邮件推特1188bet app,或 脸谱网

注释已关闭。

搜索R-Blo188bet appggers

赞助商

千万不要错过更新!
订阅R-Bloggers188bet app接收
最新R帖子的电子邮件。
(您将不再看到此消息。)

单击此处关闭(此弹出窗口将不再出现)