Bug 13170 – Optimizer - improve branch prediction for final switch

Status
NEW
Severity
enhancement
Priority
P4
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2014-07-20T21:16:39Z
Last change time
2024-12-13T18:22:31Z
Keywords
performance
Assigned to
No Owner
Creator
Walter Bright
Moved to GitHub: dmd#18853 →

Comments

Comment #0 by bugzilla — 2014-07-20T21:16:39Z
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/
Comment #1 by robert.schadek — 2024-12-13T18:22:31Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/dmd/issues/18853 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB