Samiksha Jaiswal (Editor)

Multiway branch

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit

Multiway branch is the change to a program's control flow based upon a value matching a selected criteria. It is a form of conditional statement. A multiway branch is often the most efficient method of passing control to one of a set of program labels, especially if an index has been created beforehand from the raw data.

Contents

Examples

  • Branch table
  • Switch statement - see also alternatives below
  • Multiple dispatch - where a subroutine is invoked and a return is made
  • Alternatives

    A multiway branch can, frequently, be replaced with an efficient indexed table lookup (using the data value itself or a calculated derivative of the data value, as the index of an array)

    "...the implementation of a switch statement has been equated with that of a multiway branch. However, for many uses of the switch statement in real code, it is possible to avoid branching altogether and replace the switch with one or more table look-ups. For example,the Has30Days example [presented earlier] can be implemented as the following:[C example]"

    "A Superoptimizer Analysis of Multiway Branch Code Generation" by Roger Anthony Sayle

    can be replaced, using a "safe-hashing" technique, with -

    or it can be replaced, using an index mapping table lookup, with -

    (in view of the simplicity of the latter case, it would be preferable to implement it in-line, since the overhead of using a function call may be greater than the indexed lookup itself.)

    Quotations

    Multiway branching is an important programming technique which is all too often replaced by an inefficient sequence of if tests. Peter Naur recently wrote me that he considers the use of tables to control program flow as a basic idea of computer science that has been nearly forgotten; but he expects it will be ripe for rediscovery any day now. It is the key to efficiency in all the best compilers I have studied.

    References

    Multiway branch Wikipedia