[Issue 13170] New: Optimizer - improve branch prediction for final switch
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Sun Jul 20 14:16:39 PDT 2014
https://issues.dlang.org/show_bug.cgi?id=13170
Issue ID: 13170
Summary: Optimizer - improve branch prediction for final switch
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: enhancement
Priority: P1
Component: DMD
Assignee: nobody at puremagic.com
Reporter: bugzilla at digitalmars.com
void A();
void B();
void C();
void D();
void E();
void test(int i)
{
while (1)
{
final switch (i)
{
case 1: A(); break;
case 2: B(); break;
case 3: C(); break;
case 4: D(); break;
case 5: E(); break;
}
++i;
}
}
Instead of using one dispatch at the start of the loop, put the dispatch at
each break;, which will produce much better branch prediction.
See also:
http://eli.thegreenplace.net/2012/07/12/computed-goto-for-efficient-dispatch-tables/
--
More information about the Digitalmars-d-bugs
mailing list