From b888bc4316f3f9c74b6768ddb1db1ec8fbac975e Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Tue, 19 Jun 2012 12:43:09 +0930 Subject: ntdb: optimize ntdb_fetch. We access the key on lookup, then access the data in the caller. It makes more sense to access both at once. We also put in a likely() for the case where the hash is not chained. Before: Adding 1000 records: 3644-3724(3675) ns (129656 bytes) Finding 1000 records: 1596-1696(1622) ns (129656 bytes) Missing 1000 records: 1409-1525(1452) ns (129656 bytes) Traversing 1000 records: 1636-1747(1668) ns (129656 bytes) Deleting 1000 records: 3138-3223(3175) ns (129656 bytes) Re-adding 1000 records: 3278-3414(3329) ns (129656 bytes) Appending 1000 records: 5396-5529(5426) ns (253312 bytes) Churning 1000 records: 9451-10095(9584) ns (253312 bytes) smbtorture results (--entries=1000) ntdb speed 183881-191112(188223) ops/sec After: Adding 1000 records: 3590-3701(3640) ns (129656 bytes) Finding 1000 records: 1539-1605(1566) ns (129656 bytes) Missing 1000 records: 1398-1440(1413) ns (129656 bytes) Traversing 1000 records: 1629-2015(1710) ns (129656 bytes) Deleting 1000 records: 3118-3236(3163) ns (129656 bytes) Re-adding 1000 records: 3235-3355(3275) ns (129656 bytes) Appending 1000 records: 5335-5444(5385) ns (253312 bytes) Churning 1000 records: 9350-9955(9494) ns (253312 bytes) smbtorture results (--entries=1000) ntdb speed 180559-199981(195106) ops/sec --- lib/ntdb/traverse.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/ntdb/traverse.c') diff --git a/lib/ntdb/traverse.c b/lib/ntdb/traverse.c index d0ce3517b0..2e6763cbdd 100644 --- a/lib/ntdb/traverse.c +++ b/lib/ntdb/traverse.c @@ -62,7 +62,7 @@ _PUBLIC_ enum NTDB_ERROR ntdb_nextkey(struct ntdb_context *ntdb, NTDB_DATA *key) struct ntdb_used_record rec; ntdb_off_t off; - off = find_and_lock(ntdb, *key, F_RDLCK, &h, &rec); + off = find_and_lock(ntdb, *key, F_RDLCK, &h, &rec, NULL); ntdb->free_fn(key->dptr, ntdb->alloc_data); if (NTDB_OFF_IS_ERR(off)) { return NTDB_OFF_TO_ERR(off); -- cgit