Changes between Version 1 and Version 2 of BinarySearch
- Timestamp:
- May 6, 2010, 8:35:32 AM (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
BinarySearch
v1 v2 6 6 As you repeat this test, the range of possible revisions shrinks by half each time. To note, some version control systems such as hg and git call it 'bisect'. 7 7 8 Here is an example: revision 38000 fails to boot, last known good revision is 34000. 8 Here is an example: revision 38000 fails to boot, last known good revision is 34000. That's a whopping 4,000 revisions to consider! 9 9 10 10 1. Pass One … … 12 12 * boot = success 13 13 * the issue is somewhere between 36000 and 38000 14 * you eliminated 2,000 possible revisions14 * you just eliminated 2,000 possible revisions with a single test! 15 15 1. Pass Two 16 16 * middle = 37000 17 17 * boot = success 18 * the is somewhere between 37000 and 3800018 * the offending changeset is somewhere between 37000 and 38000 19 19 * you eliminated another 1,000 possible revisions as not-containing the error. 20 20 1. Pass Three 21 21 * middle = 37500 22 22 * boot = failure 23 * the is somewhere between 37000 and 3750023 * the problem is somewhere between 37000 and 37500 24 24 * another 500 revisions (3,500 in total) are now known to be "good" 25 25 1. Pass Four 26 26 * middle = 37250 27 27 * boot = success 28 * the is somewhere between 37250 and 3750028 * the error is somewhere between 37250 and 37500 29 29 * Diminishing returns starts kicking in; only an extra 250 revisions were eliminated 30 30 1. Pass Five 31 31 * middle = 37375 32 32 * boot = failure 33 * the is somewhere between 37250 and 37375 34 By testing 5 revisions, the range has been reduced from 4,000 to a more manageable 125! 33 * the issue is somewhere between 37250 and 37375 34 35 By testing 5 revisions, the range has been reduced from 4,000 to a more manageable 125! If you wanted, you could keep repeating this to narrow the range to 63, 32, or even 16 revisions. Depending on the error and the neighboring commits, you may need to reduce it even further.