数码资讯
Linux内核中可能的和不太可能的宏定义
在内核代码中通常不太可能出现,它们实际上是Linux /编译器中定义的两个宏。 #定义可能(x)__builtin_expect(!!!(x),1) #定义可能__builtin_expect((x)!!!(x),0) 的__built_expect()函数是内置在GCC的功能。 至于为什么在内核代
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
在内核代码中通常不太可能出现,它们实际上是Linux /编译器中定义的两个宏。
#定义可能(x)__builtin_expect(!!!(x),1)
#定义可能__builtin_expect((x)!!!(x),0)
的__built_expect()函数是内置在GCC的功能。
至于为什么在内核代码中使用这两个宏,主要目的是优化代码并提高系统执行速度。
例如:
如果(可能(a)){
需要();
}
如果(不可能)
大脑();
}
这是程序员可以确定> B在程序执行过程中可能会出现比较大的,所以使用可能需要()()将告诉编译器功能背后的二进制代码是在程序的前面,如在预取数据缓存可以被需要()函数在二进制代码获取缓存,缓存的命中率也增加。
同样,不可能()的作用是告诉编译器
我们不必混淆可能和不可能,我们需要知道的是,如果(可能(A))和(如果)在功能上是等价的,如果(不可能(a)(a))。
例如,下面的代码:
#包括
#定义可能__builtin_expect((x)!!!(x),0)
#定义可能(x)__builtin_expect(!!!(x),1)
主()
{
int=2,b=4;
如果(不可能)
printf(在不太可能的,不是你的期待!;
其他{ }
printf(在不太可能的,是你的expectingn );
}
如果(可能)
printf(的可能,是你的expectingn );
}
返回0;
}
实施结果:
在不太可能,不是你的期望!
很可能是你的期望
总之,可能和不可能的功能是提高缓存命中率,提高系统执行速度。
#定义可能(x)__builtin_expect(!!!(x),1)
#定义可能__builtin_expect((x)!!!(x),0)
的__built_expect()函数是内置在GCC的功能。
至于为什么在内核代码中使用这两个宏,主要目的是优化代码并提高系统执行速度。
例如:
如果(可能(a)){
需要();
}
如果(不可能)
大脑();
}
这是程序员可以确定> B在程序执行过程中可能会出现比较大的,所以使用可能需要()()将告诉编译器功能背后的二进制代码是在程序的前面,如在预取数据缓存可以被需要()函数在二进制代码获取缓存,缓存的命中率也增加。
同样,不可能()的作用是告诉编译器
我们不必混淆可能和不可能,我们需要知道的是,如果(可能(A))和(如果)在功能上是等价的,如果(不可能(a)(a))。
例如,下面的代码:
#包括
#定义可能__builtin_expect((x)!!!(x),0)
#定义可能(x)__builtin_expect(!!!(x),1)
主()
{
int=2,b=4;
如果(不可能)
printf(在不太可能的,不是你的期待!;
其他{ }
printf(在不太可能的,是你的expectingn );
}
如果(可能)
printf(的可能,是你的expectingn );
}
返回0;
}
实施结果:
在不太可能,不是你的期望!
很可能是你的期望
总之,可能和不可能的功能是提高缓存命中率,提高系统执行速度。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。