Open-source graph database, built for real-time streaming data, compatible with Neo4j.
Go to file
Dominik Gleich f034c29724 Previous iterator should only be set when the node is alive.
Summary: There was a big performance hit induced when removing consecutive nodes from the concurrent list. The reason why it was happening is that the iterator has a pointer to previous node, and uses that pointer to re-link the whole list after the deletion. That node wasn't alive because it was deleted earlier and was always being updated to the next deleted entry in the list while incrementing the iterator. This behaviour caused find_and_disconnect method to be invoked, which has an O(n) complexity. That made our removal of O(n) entries from the list run in O(n^2) time, which is obviously slow.

Reviewers: buda, mislav.bradac, florijan

Reviewed By: mislav.bradac

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D483
2017-06-16 15:28:05 +02:00
cmake Make GNU Readline dependency optional 2017-03-24 12:42:45 +01:00
config Release preparation. 2017-06-16 15:16:11 +02:00
docs Docs - alpha user documentation work 2017-06-16 14:58:05 +02:00
libs Remember token positions for literals 2017-06-13 17:11:27 +02:00
poc Don't pass MEMGRAPH_ALL_LIBS to all cmake targets 2017-06-08 14:14:01 +02:00
release Release preparation. 2017-06-16 15:16:11 +02:00
src Previous iterator should only be set when the node is alive. 2017-06-16 15:28:05 +02:00
tests Fix bug in StrippedQuery 2017-06-16 15:04:48 +02:00
tools/gdb-plugins Add print-operator-tree command to gdb 2017-06-08 09:37:05 +02:00
.arcconfig Set arc.land.onto.default to dev 2017-03-03 13:33:45 +01:00
.clang-format Query - LogicalOp - visitable bug fix 2017-03-22 14:14:01 +01:00
.gdbinit Add print-operator-tree command to gdb 2017-06-08 09:37:05 +02:00
.gitignore Setup and run Neo4j Web Browser + Web socket proxy. 2017-06-08 09:23:10 +02:00
.ycm_extra_conf.py Skiplist garbage collector rework. 2017-06-07 10:47:02 +02:00
CHANGELOG.md Load configs from flagfiles. 2017-06-07 15:38:17 +02:00
CMakeLists.txt Release preparation. 2017-06-16 15:16:11 +02:00
coverage Silence ctest when running for coverage 2017-06-13 11:54:43 +02:00
Doxyfile Enable AUTOBRIEF for doxygen 2017-06-02 08:59:49 +02:00
Doxylogo.png Doxygen setup 2016-12-20 15:49:52 +01:00
format memgraph coverage (lcov setup in progress...) 2017-03-07 18:27:03 +01:00
init init: Add optional & required dependency checking 2017-04-07 09:27:12 +02:00
llvm-gcov memgraph coverage (lcov setup in progress...) 2017-03-07 18:27:03 +01:00
README.md benchmark folder has been removed from the root dir, README update, measure_time.hpp comments 2017-02-18 14:36:50 +01:00

memgraph

Memgraph is an ACID compliant high performance transactional distributed in-memory graph database featuring runtime native query compiling, lock free data structures, multi-version concurrency control and asynchronous IO.

dependencies

Memgraph can be compiled using any modern c++ compiler. It mostly relies on the standard template library, however, some things do require external libraries.

Some code contains linux-specific libraries and the build is only supported on a 64 bit linux kernel.

  • linux
  • clang 3.8 (good c++11 support, especially lock free atomics)
  • antlr (compiler frontend)
  • cppitertools
  • fmt format
  • google benchmark
  • google test
  • yaml-cpp