目前我正在使用SortedList<T,U>针对特定数字的二进制搜索,如果它不存在,我将获得最接近的下限键项.
我看到插入未分类数据的速度相当慢,我正在做很多事情.
有没有办法做类似的事情SortedDictionary,或者我应该坚持我的SortedList?
Compiler Explorer上的示例代码:https://godbolt.org/g/fPfw4k
我试图使用一组函数指针作为跳转表而不是开关,因为我发现它更干净.然而,令我惊讶的是,GCC和Clang编译器似乎都无法强调这一点.
有具体原因吗?
示例代码包含死链接:
namespace{
template<int N>
int bar(){
return N;
}
int foo1(int n){
if(n < 0 || n > 5){
__builtin_unreachable();
}
#if __clang__
__builtin_assume(n >= 0 && n <= 5);
#endif
static int (* const fns[])() = {
bar<0>, bar<1>, bar<2>, bar<3>, bar<4>, bar<5>
};
return fns[n]();
}
int foo2(int n){
#if __clang__
__builtin_assume(n >= 0 && n <= 5);
#endif
switch(n){
case 0:
return bar<0>();
case 1:
return bar<1>();
case 2:
return …Run Code Online (Sandbox Code Playgroud)