gpt4 book ai didi

c++ - 静态库性能 - 可以内联调用吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:50:39 25 4
gpt4 key购买 nike

我一直在尝试制作一个游戏引擎,我从制作数学基础( vector 、矩阵和点类)开始。我想制作一个静态库文件 (.lib),然后我可以在需要它的其他游戏引擎中使用它。

我想知道的是以下内容。由于库中的大多数功能都需要尽可能快。我希望看到内联的函数,例如 Vector 类。编译器可以自动执行此操作吗?还是需要某种提示?

我知道我可以将所有源代码放在头文件中,但我认为这并不是一个真正优雅的解决方案,因为某些函数可能太大而无法内联。 (头文件对于使用它们的人来说不会有点困惑。)

希望大家能帮帮我。

基督徒

最佳答案

只有在编译单元可以看到源代码的情况下,函数的内联才能保证与当前的编译器技术一起工作。一旦将代码编译成库,它就不会内联函数,无论函数做什么。

有一些“整个程序优化”方案(至少在 MSVC 和 GCC 中可用,可能在其他编译器中也可用)生成一个“目标文件”,它只是机器代码的一部分,因此一些关于“源代码想要什么”的信息可用于最终代码生成/链接阶段以移动代码、执行内联等,但这仅适用于所有源文件在编译时可用的情况。一旦某些东西被制成最终目标代码(你的静态库就是),它就不会进入“内联”部分。

显然,如果您有类,它们将位于头文件中,因此如果您将适合内联的函数放入头文件中,编译器将做正确的事情。

关于c++ - 静态库性能 - 可以内联调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16384839/

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