Rumor spread in social network: Difference between revisions
en>BattyBot merged templates into Template:Multiple issues using AWB (8277) |
en>KTC |
||
Line 1: | Line 1: | ||
{{Other uses|Bisect (disambiguation){{!}}Bisect}} | |||
'''Bisection''' is a method used in [[software development]] to identify [[Patch (computing)|change sets]] that result in a specific behavior change. It is mostly employed for finding the patch that introduced a bug. Another application area is finding the patch that indirectly fixed a bug. | |||
[[Phoronix Test Suite]] can do bisection to automatically find performance regressions. | |||
== Overview == | |||
Code bisection has the goal of minimizing the effort to find a specific change set. | |||
It employs a [[Divide and conquer algorithm|divide and conquer]] algorithm that | |||
depends on having access to the code history which is usually preserved by | |||
[[revision control]] in a [[Repository (version control)|code repository]]. | |||
== The bisection method == | |||
=== Code bisection algorithm === | |||
Code history has the structure of an [[directed acyclic graph]] which can be [[Topological ordering|topologically sorted]]. This makes it possible to use a divide and conquer search algorithm which: | |||
* splits up the [[Computational geometry#Geometric query problems|search space]] of candidate revisions | |||
* tests for the behavior in question | |||
* reduces the search space depending on the test result | |||
* re-iterates the steps above until at most one [[Candidate solution|patch candidate]] remains | |||
=== Algorithmic complexity === | |||
Bisection is in [[L (complexity)|LSPACE]] having an [[algorithmic complexity]] of <math>O(\log N)</math> with <math>N</math> denoting the number of revisions in the search space, and is similar to a [[binary search]]. | |||
=== Desirable repository properties === | |||
For code bisection it is desirable that each revision in the search space can be compiled and tested independently. | |||
== Support by revision control systems == | |||
Revision control systems like [[Git (software)|Git]] or [[Mercurial]] directly support<ref>http://www.kernel.org/pub/software/scm/git/docs/v1.7.10/git-bisect.html</ref><ref>http://www.selenic.com/mercurial/hg.1.html#bisect</ref> code bisection. | |||
Other revision control systems like [[Bazaar (software)|Bazaar]] or [[Apache Subversion|Subversion]] support it indirectly employing plugins<ref>http://doc.bazaar.canonical.com/plugins/en/bisect-plugin.html</ref> or external scripts.<ref>https://metacpan.org/module/INFINOID/App-SVN-Bisect-1.1/bin/svn-bisect</ref> | |||
== References == | |||
{{Reflist}} | |||
[[Category:Revision control]] | |||
[[Category:Revision control systems]] | |||
[[Category:Software development process]] | |||
[[Category:Algorithms]] |
Revision as of 01:20, 13 January 2013
I'm Fernando (21) from Seltjarnarnes, Iceland.
I'm learning Norwegian literature at a local college and I'm just about to graduate.
I have a part time job in a the office.
my site; wellness [continue reading this..]
Bisection is a method used in software development to identify change sets that result in a specific behavior change. It is mostly employed for finding the patch that introduced a bug. Another application area is finding the patch that indirectly fixed a bug.
Phoronix Test Suite can do bisection to automatically find performance regressions.
Overview
Code bisection has the goal of minimizing the effort to find a specific change set.
It employs a divide and conquer algorithm that depends on having access to the code history which is usually preserved by revision control in a code repository.
The bisection method
Code bisection algorithm
Code history has the structure of an directed acyclic graph which can be topologically sorted. This makes it possible to use a divide and conquer search algorithm which:
- splits up the search space of candidate revisions
- tests for the behavior in question
- reduces the search space depending on the test result
- re-iterates the steps above until at most one patch candidate remains
Algorithmic complexity
Bisection is in LSPACE having an algorithmic complexity of with denoting the number of revisions in the search space, and is similar to a binary search.
Desirable repository properties
For code bisection it is desirable that each revision in the search space can be compiled and tested independently.
Support by revision control systems
Revision control systems like Git or Mercurial directly support[1][2] code bisection.
Other revision control systems like Bazaar or Subversion support it indirectly employing plugins[3] or external scripts.[4]
References
43 year old Petroleum Engineer Harry from Deep River, usually spends time with hobbies and interests like renting movies, property developers in singapore new condominium and vehicle racing. Constantly enjoys going to destinations like Camino Real de Tierra Adentro.