mcdb - fast, reliable, simple code to create and read constant databases
C Perl Makefile Shell XS Ruby Python
Latest commit 4bbcf52 Jan 25, 2016 @jitheshtr jitheshtr committed with improve mcdb_findtagnext() performance
(thx @jitheshtr for patch; squashed and commit message by @gstrauss)

remove __builtin_prefetch() in mcdb_findtagnext()
remove __builtin_expect() in mcdb_findtagnext()

Removing prefetch improves performance by reducing use of limited
memory bandwidth, especially upon mcdb key lookup misses.  Removing
the branch prediction hint, which was tuned for mcdb key lookup hits,
allows the branch predictor to dynamically predict the branch, which
can be beneficial for use cases such as when majority of mcdb key
lookups are misses.

Performance tests on laptops should note CPU power management settings.
On Linux:
To display CPU power management settings
$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
To change CPU power management settings (until next reboot)
$ echo performance | \
  tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

github: closes #8
Permalink
Failed to load latest commit information.
contrib prepend function attributes for portability May 21, 2015
nss minor: code annotations to quell compiler warnings Oct 4, 2016
plasma @ 65181d7 plasma submodule update Oct 4, 2016
t minor: IOV_MAX from POSIX.1-2001 <limits.h> May 21, 2015
.gitattributes add .gitattributes May 21, 2015
.gitignore create .gitignore Oct 19, 2011
.gitmodules create plasma project from gstrauss/mcdb/plasma Nov 28, 2013
CHANGELOG mcdb v0.09 Nov 15, 2013
COPYING prep for public release Aug 26, 2011
FAQ fix "restictive" typo Nov 5, 2013
INSTALL create plasma project from gstrauss/mcdb/plasma Nov 28, 2013
Makefile Using `install -p -m 0444`. May 21, 2015
NOTES clang compatibility fixes Jul 9, 2013
README create mcdb.spec; modify Makefile for lib, lib64 Oct 29, 2011
THANKS mcdb v0.06 Nov 18, 2012
mcdb.c improve mcdb_findtagnext() performance Oct 10, 2016
mcdb.h prepend function attributes for portability May 21, 2015
mcdb.spec mcdb v0.09 Nov 15, 2013
mcdb_error.c porting from GNU Linux/glibc to other platforms Nov 6, 2011
mcdb_error.h prepend function attributes for portability May 21, 2015
mcdb_make.c minor: code annotations to quell compiler warnings Oct 4, 2016
mcdb_make.h prepend function attributes for portability May 21, 2015
mcdb_makefmt.c prepend function attributes for portability May 21, 2015
mcdb_makefmt.h prepend function attributes for portability May 21, 2015
mcdb_makefn.c minor: code annotations to quell compiler warnings Oct 4, 2016
mcdb_makefn.h prepend function attributes for portability May 21, 2015
mcdbctl.c minor: code annotations to quell compiler warnings Oct 4, 2016
nointr.c address conditions identified by Coverity Dec 6, 2013
nointr.h prepend function attributes for portability May 21, 2015
uint32.c employ plasma pragmas and byteorder endian swap Jul 18, 2013
uint32.h prepend function attributes for portability May 21, 2015

README

mcdb - fast, reliable, simple code to create and read constant databases

README  - summary (this file)
INSTALL - quick installation 
COPYING - copyright/license
NOTES   - technical details (if interested)

t/PERFORMANCE - performance notes

mcdb (mmap constant database) is originally based on the cdb package, a:
"fast, reliable, simple package for creating and reading constant databases."
mcdb is almost 33% faster, provides support for use in threaded programs, and
supports databases larger than 4 GB.

nss_mcdb is an nss implementation of standard authentication and netdb files
built as mcdb databases, which are faster than using nscd.  

https://github.com/gstrauss/mcdb/ provides the latest information about mcdb.
http://cr.yp.to/cdb.html provides information about cdb, on which mcdb is based.