Tomislav Novak 35c8c814e8 Make ForwardIterator::status() more efficient
Summary:
In D19581 I made `ForwardIterator::status()` check all child iterators,
including immutable ones. It's, however, not necessary to do it every
time -- it'll suffice to check only when they're used and their status
could change.

This diff:
* introduces `immutable_status_` which is updated by `Seek()` and `Next()`
* removes special handling of `kIncomplete` status in those methods

Test Plan:
* `db_test`
* hacked ReadSequential in db_bench.cc to check `status()` in addition to
  validity:

```
   $ ./db_bench -use_existing_db -benchmarks readseq -disable_auto_compactions \
      -use_tailing_iterator  # without this patch
   Keys:       16 bytes each
   Values:     100 bytes each (50 bytes after compression)
   Entries:    1000000
   [...]
   DB path: [/dev/shm/rocksdbtest/dbbench]
   readseq      :       0.562 micros/op 1778103 ops/sec;   98.4 MB/s
   $ ./db_bench -use_existing_db -benchmarks readseq -disable_auto_compactions \
      -use_tailing_iterator  # with the patch
   readseq      :       0.433 micros/op 2311363 ops/sec;  127.8 MB/s
```

Reviewers: igor, sdong, ljin

Reviewed By: ljin

Subscribers: dhruba, leveldb, march, lovro

Differential Revision: https://reviews.facebook.net/D24063
2014-11-10 15:44:20 -08:00
..
2014-10-31 11:59:54 -07:00
2014-09-04 16:18:36 -07:00
2014-10-31 15:04:01 -07:00
2014-09-24 13:12:16 -07:00
2014-11-06 11:14:28 -08:00
2014-11-06 11:14:28 -08:00
2014-11-06 11:14:28 -08:00
2014-11-06 11:14:28 -08:00
2014-11-06 11:14:28 -08:00
2014-10-31 11:59:54 -07:00
2014-11-07 11:50:34 -08:00
2014-11-07 11:50:34 -08:00
2014-11-06 11:14:28 -08:00
2014-01-27 14:49:10 -08:00
2014-03-14 22:44:35 +00:00
2014-11-07 11:50:34 -08:00
2014-11-07 11:50:34 -08:00
2014-10-27 12:10:13 -07:00
2014-10-27 12:10:13 -07:00
2014-11-06 11:14:28 -08:00
2014-10-31 11:59:54 -07:00
2014-11-07 15:04:30 -08:00
2014-10-31 11:59:54 -07:00
2014-11-06 11:14:28 -08:00
2014-10-27 15:03:45 -07:00
2014-09-04 23:06:23 +08:00
2014-11-06 11:14:28 -08:00
2014-11-06 11:14:28 -08:00
2014-10-31 11:59:54 -07:00
2014-10-31 11:59:54 -07:00
2014-10-29 17:43:37 -07:00
2014-11-10 17:39:38 -05:00
2014-10-27 12:10:13 -07:00
2014-09-13 14:14:10 -07:00
2014-09-12 16:23:58 -07:00
2014-09-12 16:23:58 -07:00