gpt4 book ai didi

在链接时定义的 C 常量

转载 作者:太空狗 更新时间:2023-10-29 15:20:24 24 4
gpt4 key购买 nike

我有一个对性能非常敏感的应用程序,我很好奇我是否可以保存一些常量用于链接。我有许多正在使用的全局常量(例如模拟尺寸),它们的使用量非常大。我尝试将它们从常量更改为变量,但性能急剧下降。因此,我创建了一个有点复杂的系统,它从配置文件中分配常量,并为请求的参数集显式构建可执行文件。因此,我想尽量减少为每次参数更改重建的内容。

问题是我是否可以预编译我的一些对象,并在链接时将值放入。我能想到的最可能的实现是将这些常量作为 const 参数包含在需要它们的函数中,并希望编译器/链接器优化产生与硬编码它们相同的性能作为 #define 常量。关于如何使这项工作有任何建议吗?

(你知道人们怎么说“但这并不重要,除非你在集群上进行了数十亿次科学计算”?——我就是那个在科学计算中进行了数十亿次的人在一个集群上。是的,我也会在完全实现之前对任何东西进行基准测试。)

最佳答案

假设使用 gcc,您可以声明具有外部链接的常量,将它们放入它们自己的源文件中并编译并与 link-time optimizations 链接.

如果是 clang,我建议采用类似的方法,但不是使用常规 LTO,而是使用 -emit-llvm -c 编译为 bitcode,并且仅在链接时作为最后一步编译为 native 代码.

此外,您可以保留代码原样(即使用预处理器定义)并信任 ccache以避免不必要的重新编译。

关于在链接时定义的 C 常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9753723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com