http://skitch.com/dlsspy/nh2qb/kvtest-results-on-linode
Here's the code: http://github.com/dustin/kvtest
Depending on what you're doing and how safe you want it, you can adjust inputs to select a different winner.
http://skitch.com/dlsspy/nh2qb/kvtest-results-on-linode
Here's the code: http://github.com/dustin/kvtest
Depending on what you're doing and how safe you want it, you can adjust inputs to select a different winner.
I took a look at your BDB demo and saw that you weren't creating the DBs in an environment, which meant every operation was straight to disk, and also meant that you weren't running with write-ahead logs (which will give you durability). I didn't look too closely to see if the other databases had caching enabled or not (or what their defaults were).
On my macbook air, configuring with caching (and no logging) yielded this from your benchmark:
Air:kvtest jamie$ ./bdb-test Running test ``test test'' PASS Running test ``write test'' Ran 284669 operations in 5s (56933 ops/s) PASS
Of course, page caching makes all the difference :-)
BDB has some great sample code, I'd recommend taking a look at: examples_c/ex_env.c (http://www.fiveanddime.net/berkeley-db/db-4.3.28/examples_c/...)
I really wish BDB had more sensible defaults, I think it unfairly gets a black-eye in performance shootouts.
Specifically, it means this: http://github.com/dustin/kvtest/blob/master/sqlite-base.cc#L...