Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/armon/libart
Adaptive Radix Trees implemented in C
https://github.com/armon/libart
Last synced: about 2 months ago
JSON representation
Adaptive Radix Trees implemented in C
- Host: GitHub
- URL: https://github.com/armon/libart
- Owner: armon
- License: other
- Created: 2013-05-07T19:45:03.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2022-03-21T07:41:41.000Z (over 2 years ago)
- Last Synced: 2024-07-10T12:51:34.146Z (3 months ago)
- Language: C
- Homepage:
- Size: 3.38 MB
- Stars: 757
- Watchers: 29
- Forks: 133
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
libart [![Build Status](https://travis-ci.org/armon/libart.png)](https://travis-ci.org/armon/libart)
=========This library provides a C99 implementation of the Adaptive Radix
Tree or ART. The ART operates similar to a traditional radix tree but
avoids the wasted space of internal nodes by changing the node size.
It makes use of 4 node sizes (4, 16, 48, 256), and can guarantee that
the overhead is no more than 52 bytes per key, though in practice it is
much lower.As a radix tree, it provides the following:
* O(k) operations. In many cases, this can be faster than a hash table since
the hash function is an O(k) operation, and hash tables have very poor cache locality.
* Minimum / Maximum value lookups
* Prefix compression
* Ordered iteration
* Prefix based iterationUsage
-------Building the test code will generate errors if libcheck is not available.
To build the test code successfully, do the following::$ cd deps/check-0.9.8/
$ ./configure
$ make
# make install
# ldconfig (necessary on some Linux distros)
$ cd ../../
$ scons
$ ./test_runnerOr, if you prefer, you can skip the installation of libcheck and the test
will adapt to it being in the tree (leave out `make install`):$ LD_LIBRARY_PATH=deps/check-0.9.8/src/.libs:. ./test_runner
This build will produce a test_runner executable for testing and a shared_object
(libart.so on *NIX systems) for linking with.References
----------Related works:
* [The Adaptive Radix Tree: ARTful Indexing for Main-Memory Databases](http://www-db.in.tum.de/~leis/papers/ART.pdf)