diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2011-03-25 16:09:05 +1030 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2011-03-25 16:09:05 +1030 |
commit | 1444b09cd357c145b6e3fdb1bce3b6ace6862f56 (patch) | |
tree | 2624fa3c044715a79d3c34910188bdec3fb18e07 /junkcode/dongre.avinash@gmail.com-clibutils/win/tclibutils_Debug/t_clibutils.obj | |
parent | 4bde5a87c0df66d2000d972a2a0a9992a9d9396d (diff) |
tdb2: fix traversal bug in free list lock_and_alloc()
We keep looking even if the current best is exactly right. This is
really bad, because our smaller free lists hold exactly one size: with
this bug we iterate to the end of the list before hitting the end and
deciding we can use it after all.
Before:
$ ./speed --transaction --no-sync 2000000
Adding 2000000 records: 1179 ns (93594224 bytes)
Finding 2000000 records: 694 ns (93594224 bytes)
Missing 2000000 records: 429 ns (93594224 bytes)
Traversing 2000000 records: 519 ns (93594224 bytes)
Deleting 2000000 records: 896 ns (93594224 bytes)
Re-adding 2000000 records: 1129 ns (93594224 bytes)
Appending 2000000 records: 1713 ns (182801232 bytes)
Churning 2000000 records: 32612 ns (182801232 bytes)
After:
$ ./speed --transaction --no-sync 2000000
Adding 2000000 records: 1195 ns (93594224 bytes)
Finding 2000000 records: 719 ns (93594224 bytes)
Missing 2000000 records: 429 ns (93594224 bytes)
Traversing 2000000 records: 523 ns (93594224 bytes)
Deleting 2000000 records: 901 ns (93594224 bytes)
Re-adding 2000000 records: 1032 ns (93594224 bytes)
Appending 2000000 records: 1711 ns (182801232 bytes)
Churning 2000000 records: 3233 ns (182801232 bytes)
Diffstat (limited to 'junkcode/dongre.avinash@gmail.com-clibutils/win/tclibutils_Debug/t_clibutils.obj')
0 files changed, 0 insertions, 0 deletions