kyotocabinet hashdb是否包含RAM中的数组桶?

时间:2015-11-14 16:14:07

标签: java key-value kyotocabinet

我使用kyotocabinet hashdb进行哈希搜索。我已将1000万字段放入hashdb并搜索1000个随机哈希值78毫秒。过了一段时间我又试了一次,花了大约40秒。我以为kyotodb将数据桶加载到RAM然后搜索。每次搜索后它都会越来越快,但仍然慢〜5秒。它也不适用于2个不同的线程。

这是关于java的代码:

long a = System.currentTimeMillis();

DB db = new DB();
int cnt = 0;

// open the database
if (!db.open("m10.kch#bnum=10000000#msiz=1024000000", DB.OWRITER | DB.OCREATE)) {
    System.err.println("open error: " + db.error());
}

for (int j = 0; j < 10; j++) {
    long ts = System.currentTimeMillis();
    for (int i = 0; i < 1000000; i++) {
        db.set(getRandomKey(cnt), getRandomVal());
        cnt++;
    }

    long te = System.currentTimeMillis();
    System.out.println("million added " + (j + 1) + " for " + (te - ts));
}

for (int i = 0; i < 1000; i++) {
    System.out.println(db.get(getRandomKey((long) (Math.random() * cnt))));
}

db.close();
long b = System.currentTimeMillis();
System.out.println("total = " + (b - a)); // here i take 78msec or 40sec or 5 sec

它出了什么问题?或者搜索1000万的正常速度?我没有看到O(1)。

0 个答案:

没有答案