Open-source graph database, built for real-time streaming data, compatible with Neo4j.
cyphergraphgraph-algorithmsgraph-analysisgraph-databasekafkakafka-streamsnosqlopencypherstream-processingstreaming-data
88de3422d0
Summary: This is a simple change which modifies interface of awesome_memgraph_functions to accept C-style pointer to array with count. Doing things this way, allows us to easily try out different allocation schemes for function arguments. In this diff, we are now using stack allocation of arguments in a plain fixed size array. This is done when the number of arguments is small. According to heaptrack, this small change should yield noticeable improvements to heap usage. Obviously, this doesn't solve the problem of heap allocations inside TypedValue arguments themselves. These allocations appear when std::string and std::vector is used inside TypedValue. Micro benchmarks show that there is some performance improvement, mostly around the limits of using array vs std::vector. The improvement is more noticeable with multiple threads, due to primary gain being in avoiding calls to memory allocation. Reviewers: mtomic, msantl, mferencevic Reviewed By: mferencevic Subscribers: pullbot Differential Revision: https://phabricator.memgraph.io/D1581 |
||
---|---|---|
cmake | ||
config | ||
customers | ||
docs | ||
experimental | ||
libs | ||
poc | ||
release | ||
src | ||
tests | ||
tools | ||
.arcconfig | ||
.clang-format | ||
.gdbinit | ||
.gitignore | ||
.ycm_extra_conf.py | ||
apollo_archives.py | ||
apollo_archives.yaml | ||
apollo_build.yaml | ||
CHANGELOG.md | ||
CMakeLists.txt | ||
Doxyfile | ||
Doxylogo.png | ||
init | ||
README.md |
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
- glog
- gflags