linearScanEnd 编译指示
linearScanEnd 编译指示可以用来告诉编译器如何编译Nim case 语句。 从语法上讲,它必须用作语句:
- case myInt
- of 0:
- echo "most common case"
- of 1:
- {.linearScanEnd.}
- echo "second most common case"
- of 2: echo "unlikely: use branch table"
- else: echo "unlikely too: use branch table for ", myInt
在这个例子中,case分支 0 和 1 比其他情况更常见。 因此,生成的汇编程序代码应首先测试这些值,以便CPU的分支预测器有很好的成功机会(避免昂贵的CPU管道停顿)。 其他情况可能会被放入O(1)开销的跳转表中,但代价是(很可能)管道停顿。
应该将 linearScanEnd 编译指示放入应通过线性扫描进行测试的最后一个分支。 如果放入整个 case 语句的最后一个分支,整个 case 语句使用线性扫描。