Skip to main content

TuringDB Benchmarks

This page showcases the performance of TuringDB vs Neo4j and Memgraph across a series of real-world graph analytics queries using the Reactome biological knowledge graph. The goal of this benchmark is to compare the out-of-the-box performance of TuringDB with Neo4J and Memgraph on a few basic queries on the Reactome knowledge graph.

Results Overview

You can find more technical details in the Technical Report page and on turing-bench GitHub repo. Especially you can find daily run information here.

Reactome

QueryTuringDBNeo4jMemgraphSpeedup vs Neo4jSpeedup vs Memgraph
MATCH (n:Drug) RETURN n2ms977ms371ms488x186x
MATCH (n:ProteinDrug) RETURN n1ms221ms340ms221x340x
MATCH (n:Drug:ProteinDrug) RETURN n1ms270ms359ms270x359x
MATCH (n:Taxon)-->(m:Species) RETURN n,m1ms259ms301ms259x301x
MATCH (n)-->(m:Interaction)-->(o) RETURN n,m,o707ms33117ms32609ms47x46x
MATCH (n{displayName:"Autophagy"}) RETURN n283ms918ms629ms3.2x2.2x
MATCH (n{displayName:"Autophagy"})-->(m) RETURN m216ms628ms540ms2.9x2.5x
MATCH (n{displayName:"Autophagy"})-->(m)-->(p) RETURN p215ms622ms569ms2.9x2.6x
MATCH (n{displayName:"Autophagy"})-->(m)-->(p)-->(q) RETURN q370ms878ms702ms2.4x1.9x
MATCH (n{displayName:"Autophagy"})-->(m)-->(p)-->(q)-->(r) RETURN r236ms2776ms2595ms12x11x
MATCH (n{displayName:"Autophagy"})-->(m)-->(p)-->(q)-->(r)-->(s) RETURN s296ms5784ms5012ms20x17x
MATCH (n{displayName:"Autophagy"})-->(m)-->(p)-->(q)-->(r)-->(s)-->(t) RETURN t493ms17983ms17256ms36x35x
MATCH (n{displayName:"Autophagy"})-->(m)-->(p)-->(q)-->(r)-->(s)-->(t)-->(v) RETURN v1149ms66876ms54252ms58x47x
MATCH (n{displayName:"APOE-4 [extracellular region]"}) RETURN n351ms887ms705ms2.5x2.0x
MATCH (n{displayName:"APOE-4 [extracellular region]"})-->(m) RETURN m215ms734ms567ms3.4x2.6x
MATCH (n{displayName:"APOE-4 [extracellular region]"})-->(m)-->(p) RETURN p211ms616ms603ms2.9x2.9x
MATCH (n{displayName:"APOE-4 [extracellular region]"})-->(m)-->(p)-->(q) RETURN q213ms613ms585ms2.9x2.7x
MATCH (n{displayName:"APOE-4 [extracellular region]"})-->(m)-->(p)-->(q)-->(r) RETURN r213ms649ms560ms3.0x2.6x
MATCH (n{displayName:"APOE-4 [extracellular region]"})-->(m)-->(p)-->(q)-->(r)-->(s) RETURN s211ms669ms537ms3.2x2.5x
MATCH (n{displayName:"APOE-4 [extracellular region]"})-->(m)-->(p)-->(q)-->(r)-->(s)-->(t) RETURN t211ms644ms557ms3.1x2.6x
MATCH (n{displayName:"APOE-4 [extracellular region]"})-->(m)-->(p)-->(q)-->(r)-->(s)-->(t)-->(v) RETURN v215ms11087ms465ms52x2.2x
MATCH (n)-[e:release]->(m) RETURN n,m240ms4046ms3162ms17x13x
MATCH (n)-[e:interactor]->(m) RETURN n,m318ms26174ms25184ms82x79x
MATCH (n)-[e:surroundedBy]->(m) RETURN n,m202ms1548ms367ms7.7x1.8x
MATCH (n)-[:hasEvent]->(m) RETURN n,m292ms11204ms11008ms38x38x
MATCH (n:Pathway)-[:hasEvent]->(m:ReactionLikeEvent) RETURN n,m94ms8442ms8696ms90x93x
MATCH (r:ReactionLikeEvent)-[:output]->(s:PhysicalEntity) RETURN r,s184ms13383ms13591ms73x74x
MATCH (n:DatabaseObject{isChimeric:false}) RETURN n239ms2507ms1538ms10x6.4x
MATCH (n:DatabaseObject{isChimeric:true}) RETURN n213ms799ms429ms3.8x2.0x
MATCH (b)-->(a:Pathway) RETURN a324ms4447ms5917ms14x18x
MATCH (c)-->(b)-->(a:Pathway) RETURN a, c2318ms35138ms34946ms15x15x
MATCH (c)-->(b)-->(a:Pathway) RETURN b2109ms22699ms22932ms11x11x
MATCH (c)-->(b)-->(a:Pathway) RETURN c1978ms18090ms17969ms9.1x9.1x
MATCH (c)-->(b)-->(a:Pathway) RETURN a1977ms22424ms23598ms11x12x

Poledb

QueryTuringDBNeo4jMemgraphSpeedup vs Neo4jSpeedup vs Memgraph
MATCH (n) RETURN n57ms3130ms1858ms55x33x
MATCH (p:Person) RETURN p3ms134ms25ms45x8.3x
MATCH (p:Person) RETURN count(p)1ms115ms8ms115x8.0x
MATCH (c:Crime) RETURN c15ms842ms772ms56x51x
MATCH (c:Crime) RETURN count(c)1ms45ms13ms45x13x
MATCH ()-[r]->() RETURN r64ms2660ms2386ms42x37x
MATCH ()-[r]->() RETURN count(r)9ms55ms28ms6.1x3.1x
MATCH (p:Person {name: 'John'})-[:PARTY_TO]->(c:Crime) RETURN p, c4ms24ms0ms6.0x-
MATCH (p:Person)-[:PARTY_TO]->(c:Crime) RETURN p.name, p.surname, c.type1ms28ms11ms28x11x
MATCH (p:Person {surname: 'Smith'})-[r]->(n) RETURN p3ms64ms2ms21x0.7x
MATCH (p:Person)-[r]->(n) WHERE p.surname = 'Smith' RETURN p3ms60ms1ms20x0.3x
MATCH (p1:Person)-[:PARTY_TO]->(c:Crime)<-[:PARTY_TO]-(p2:Person) WHERE p1 <> p2 RETURN p1.name, p2.name, c.type1ms126ms8ms126x8.0x
MATCH (p1:Person)-[:KNOWS]->(p2:Person)-[:PARTY_TO]->(c:Crime) RETURN p1.name, p2.name1ms24ms11ms24x11x
MATCH (c:Crime)-[:OCCURRED_AT]->(l:Location) RETURN l.postcode30ms553ms362ms18x12x