我应该用gcc的__builtin_expected
宏在带有多个嵌套测试的if
中包装什么?我有这样的代码:
if((x<RADIUS && (forward?v<0:v>0)) || (x+RADIUS>dimensions[d] && (forward?v>0:v<0)))
我已经(可笑地)包装了我能包装的一切:
#define likely(x) __builtin_expect((x),1)
#define unlikely(x) __builtin_expect((x),0)
if(unlikely(unlikely(unlikely(x<RADIUS) && likely(likely(forward)?likely(v<0):likely(v>0))) || unlikely(unlikely(x+RADIUS>dimensions[d]) && likely(likely(forward)?likely(v>0):likely(v<0)))))
我希望这只是过火,因为它几乎是不可读的。
我不认为这里有错误的答案。编译器将使用您的提示来决定哪一种情况是每次比较的“else”情况;不仅仅是C代码,还有逻辑的and和or,信息越多越好。
为了代码的可读性,我建议将其保留在大内容中:每个if语句一次,但这并不是真的基于任何确凿的证据。
有没有考虑过使用< code>-fprofile-generate,用典型数据运行代码,然后用< code>-fprofile-use重新构建?这样,编译器可以为所有这些情况构建自己的图像。这更具可移植性(没有特定于编译器的注释),更具可读性,并且更经得起未来的检验。
3. 使用指南 本章主要介绍如何使用Camel。 如何通过界面,对负载相关的基本信息进行配置。包括Nginx集群配置、业务集群配置、站点信息配置; 如何部署配置到Nginx集群上。
使用指南 代码安装 数据报告 统计设置 账户管理 疑难问题 分析云 分析云是什么 分析云能做什么 分析云常见问题
Azure IoT 中心是一项完全托管的服务,有助于在数百万台设备和单个解决方案后端之间实现安全可靠的双向通信。Azure IoT 中心提供如下功能: 使用每个设备的安全凭据和访问控制来保护通信安全 多个设备到云和云到设备的超大规模通信选项 各设备状态信息和元数据的可查询存储 通过最流行语言和平台的设备库来方便建立设备连接 设备到云通信 将信息从设备应用发送到解决方案后端时,IoT 中心会公开三个
本节主要介绍 WebClient 软包的基本使用流程, 并针对使用过程中经常涉及到的结构体和重要 API 进行简要说明。 准备工作 首先需要下载 WebClient 软件包,并将软件包加入到项目中。在 BSP 目录下使用 menuconfig 命令打开 env 配置界面,在 RT-Thread online packages → IoT - internet of things 中选择 WebCl
这里主要介绍 mbedtls 程序的基本使用流程,并针对使用过程中经常涉及到的结构体和重要 API 进行简要说明。 mbedtls 的基本工作流程如下所示: 初始化 SSL/TLS 上下文 建立 SSL/TLS 握手 发送、接收数据 交互完成,关闭连接 menuconfig 配置说明 获取 mbedtls 软件包或者修改用户配置都需要使用 menuconfig。需要用户打开 ENV 工具,并将目录
ali-iotkit 软件包封装了 HTTP、MQTT、CoAP 和 OTA 等应用层协议,方便了用户设备接入云平台,这里摘取部分做简要介绍。 MQTT 连接 目前阿里云支持 MQTT 标准协议接入,兼容 3.1.1 和 3.1 版本协议,具体的协议请参考 MQTT 3.1.1 和 MQTT 3.1 协议文档。 特征 支持 MQTT 的 PUB、SUB、PING、PONG、CONNECT、DISC