Islam AbdelRahman 8c71eb5afc Optimize DBIter::Prev() by reducing stack overhead
Summary:
It looks like we are spending significant amount of time creating std::deque<std::string> every time we do Iterator::Prev()

{F921567}

By using merge_operands_ as a DBIter data member w create it once and reduce this overhead and see ~30% performance improvement when using Iterator::Prev() on hot data

Orignal performance

```
DEBUG_LEVEL=0 make db_bench -j64 && ./db_bench --benchmarks="readreverse" --db="/dev/shm/bench_prev_opt/" --use_existing_db --disable_auto_compactions
readreverse  :       0.713 micros/op 1402219 ops/sec;  155.1 MB/s
readreverse  :       0.609 micros/op 1641386 ops/sec;  181.6 MB/s
readreverse  :       0.684 micros/op 1461150 ops/sec;  161.6 MB/s
readreverse  :       0.629 micros/op 1589842 ops/sec;  175.9 MB/s
readreverse  :       0.647 micros/op 1544530 ops/sec;  170.9 MB/s
```

After optimization

```
DEBUG_LEVEL=0 make db_bench -j64 && ./db_bench --benchmarks="readreverse" --db="/dev/shm/bench_prev_opt/" --use_existing_db --disable_auto_compactions
readreverse  :       0.488 micros/op 2051189 ops/sec;  226.9 MB/s
readreverse  :       0.505 micros/op 1980892 ops/sec;  219.1 MB/s
readreverse  :       0.541 micros/op 1846971 ops/sec;  204.3 MB/s
readreverse  :       0.497 micros/op 2013612 ops/sec;  222.8 MB/s
readreverse  :       0.480 micros/op 2082665 ops/sec;  230.4 MB/s
```

Test Plan: make check -j64

Reviewers: sdong, anthony, rven, igor, yhchiang

Reviewed By: yhchiang

Subscribers: jkedgar, dhruba

Differential Revision: https://reviews.facebook.net/D52563
2016-01-07 07:59:14 -08:00
..
2015-07-17 18:59:11 +02:00
2015-12-11 01:54:48 +09:00
2015-12-29 13:22:13 -08:00
2016-01-04 12:01:27 -08:00
2016-01-06 13:43:22 -08:00
2015-12-29 13:22:13 -08:00
2015-09-17 11:42:56 -07:00
2015-04-23 12:10:36 -07:00
2015-12-11 01:54:48 +09:00
2015-03-17 14:08:00 -07:00
2015-07-07 12:10:10 -07:00
2015-11-24 16:33:09 +03:00
2015-11-24 16:33:09 +03:00
2015-08-05 07:33:27 -07:00
2016-01-06 13:43:22 -08:00
2015-12-28 15:06:34 -08:00
2015-03-17 14:08:00 -07:00
2014-11-10 17:39:38 -05:00
2015-09-17 11:42:56 -07:00
2015-05-29 14:36:35 -07:00