Dhruba Borthakur 9b87a2bae8 Avoid doing a exhaustive search when looking for overlapping files.
Summary:
The Version::GetOverlappingInputs() is called multiple times in
the compaction code path. Eack invocation does a binary search
for overlapping files in the specified key range.
This patch remembers the offset of an overlapped file when
GetOverlappingInputs() is called the first time within
a compaction run. Suceeding calls to GetOverlappingInputs()
uses the remembered index to avoid the binary search.

I measured that 1000 iterations of GetOverlappingInputs
takes around 4500 microseconds without this patch. If I use
this patch with the hint on every invocation, then 1000
iterations take about 3900 microsecond.

Test Plan: make check OPT=-g

Reviewers: heyongqiang

Reviewed By: heyongqiang

CC: MarkCallaghan, emayanke, sheki

Differential Revision: https://reviews.facebook.net/D6513
2012-11-07 11:47:17 -08:00
..
2011-10-31 17:22:06 +00:00
2011-10-31 17:22:06 +00:00
2011-10-31 17:22:06 +00:00
2012-09-16 19:33:43 -07:00
2012-04-17 08:36:46 -07:00
2012-09-06 17:52:08 -07:00
2012-09-06 17:52:08 -07:00
2011-10-31 17:22:06 +00:00
2011-10-31 17:22:06 +00:00
2011-10-31 17:22:06 +00:00
2011-10-31 17:22:06 +00:00
2011-10-31 17:22:06 +00:00
2011-10-31 17:22:06 +00:00
2011-10-31 17:22:06 +00:00