leveldb是Google开发的一款Key/Value数据库,特点是轻量,高效。采用标准C++开发,跨平台只要实现相应接口即可,但其默认并没有提供Windows接口,Chromium接口依赖项又太多。。于是我自己实现了一个简单的Win32接口,基本功能是实现了。。。db_bench通过了,db_test.MultiThreaded和db_test.Randomized没过....
以下是Windows平台下的db_bench结果,我没有raid,没有ssd,cpu也是普通的双核,所以性能参数惨了点。
LevelDB: version 1.2
Keys: 16 bytes each
Values: 100 bytes each (50 bytes after compression)
Entries: 1000000
RawSize: 110.6 MB (estimated)
FileSize: 62.9 MB (estimated)
------------------------------------------------
fillseq : 3.947 micros/op; 28.0 MB/s
fillsync : 343.000 micros/op; 0.3 MB/s (1000 ops)
fillrandom : 15.678 micros/op; 7.1 MB/s
overwrite : 18.877 micros/op; 5.9 MB/s
readrandom : 30.779 micros/op;
readrandom : 20.467 micros/op;
readseq : 0.741 micros/op; 149.3 MB/s
readreverse : 1.162 micros/op; 95.2 MB/s
compact : 2917000.000 micros/op;
readrandom : 42.775 micros/op;
readseq : 0.668 micros/op; 165.5 MB/s
readreverse : 1.112 micros/op; 99.5 MB/s
fill100K : 7269.000 micros/op; 13.1 MB/s (1000 ops)
crc32c : 6.094 micros/op; 641.0 MB/s (4K per op)
snappycomp : 20.828 micros/op; 187.5 MB/s (output: 55.1%)
snappyuncomp : 3.098 micros/op; 1261.1 MB/s
acquireload : 8.730 micros/op; (each op is 1000 loads)
为了对比,在linux下也运行了一次db_bench。系统是ubuntu11.04,额。。。。linux系统不太会用,性能比Windows还惨。
LevelDB: version 1.2
Date: Sat Jul 30 16:11:19 2011
CPU: 2 * Intel(R) Core(TM)2 Duo CPU P7450 @ 2.13GHz
CPUCache: 3072 KB
Keys: 16 bytes each
Values: 100 bytes each (50 bytes after compression)
Entries: 1000000
RawSize: 110.6 MB (estimated)
FileSize: 62.9 MB (estimated)
WARNING: Snappy compression is not enabled
------------------------------------------------
fillseq : 46.164 micros/op; 2.4 MB/s
fillsync : 36561.474 micros/op; 0.0 MB/s (1000 ops)
fillrandom : 53.223 micros/op; 2.1 MB/s
overwrite : 59.198 micros/op; 1.9 MB/s
readrandom : 146.295 micros/op;
readrandom : 140.693 micros/op;
readseq : 2.069 micros/op; 53.5 MB/s
readreverse : 2.616 micros/op; 42.3 MB/s
compact : 7378158.808 micros/op;
readrandom : 133.769 micros/op;
readseq : 1.810 micros/op; 61.1 MB/s
readreverse : 2.265 micros/op; 48.8 MB/s
fill100K : 9020.454 micros/op; 10.6 MB/s (1000 ops)
crc32c : 5.266 micros/op; 741.8 MB/s (4K per op)
snappycomp : 3.099 micros/op; (snappy failure)
snappyuncomp : 9.060 micros/op; (snappy failure)
acquireload : 0.511 micros/op; (each op is 1000 loads)
我把项目传到Google上了http://code.google.com/p/leveldbwin/