首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TinkerGraph getLabels()和getTraversals()正在使测试变得缓慢

TinkerGraph getLabels()和getTraversals()正在使测试变得缓慢
EN

Stack Overflow用户
提问于 2017-01-29 21:57:43
回答 1查看 262关注 0票数 1

我有一些使用TinkerGraph (内存中)的集成测试,每个测试需要10-15秒才能完成。通过使用VisualVM进行监控,我发现造成延迟的主要原因是TraversalHelper.getLabels()TraversalHelper.getTraversals()方法。

我原以为TinkerGraph是内存中很快就会闪现出来的东西,但可能是我做错了什么,或者确实存在一些性能问题。我的其他测试还不到200毫秒。任何帮助都是非常感谢的!

下面是一个需要5+秒才能创建51个顶点的查询,每个顶点大约有4-5个属性,每个属性通过89个边相互关联:

PasteBin实例

更新:我的测试中的性能在使用新部署的3.2.5-快照和3.3.0-快照(来自http://repository.apache.org/snapshots/)之后,在内存测试中从大约40分钟提高到了~6s,使用了新部署的3.2.5-快照和3.3.0-快照之后,从2分钟提高到1分钟以下。有关更多细节,您可以在这里查看:https://issues.apache.org/jira/browse/TINKERPOP-1642。我想对stephen说一句非常感谢的话,他的快速而精确的动作不仅对内存中的gremlin遍历,而且对使用gremlin的所有其他基于磁盘的图形技术都产生了很大的性能改进。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-24 12:06:41

这是一个相当大的一块葛林。老实说,我不知道在带有350+链式语句的Gremlin的性能方面会期望什么。

我想提几点建议。尝试在Gremlin的一行中完成所有这些工作,会产生难以阅读和难以维护的代码。您可能不会尝试以这种方式编写非Gremlin代码(无论您使用的是哪种语言),所以在编写Gremlin时最好考虑一下您的标准编程技术。

虽然我不确定在这一大块Gremlin上的性能应该是什么,但我确实知道,如果将该语句分解成更小、更易于管理的位,创建51个顶点和89个边不应该花5+秒时间运行。我不知道如何将这种差异归因于即时,但您正在为自己在遍历过程中创建相当大的开销,这些步骤标签可能解释了您在问题中提到的对getLabels()的没完没了的调用。

更新:参见下面的讨论

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41926409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档