RTTI 的成本:深入分析
RTTI,或运行时类型信息,是 C 中的一项功能,允许您在运行时确定对象的类型。虽然它是一个强大的工具,但它也带来了一定的性能开销。然而,量化这种开销已被证明是难以捉摸的。
性能影响
RTTI 的成本因实现而异。不过,可以进行一些一般性观察。
实现差异
GCC 是使用最广泛的 C 编译器,具有供应商中立的 ABI,跨动态链接边界提供稳定的 std::type_info 对象。这意味着使用 typeid(a) == typeid(b) 的类型比较在 Linux、BSD 和其他支持的嵌入式平台上非常快。
相比之下,mingw32-gcc 遵循 Windows C ABI,它确实不保证 std::type_info 对象跨 DLL 的稳定性。因此,这种情况下的类型比较依赖于 strcmp,它的速度要慢得多。
开发注意事项
虽然 RTTI 提供了某些优势,但通常建议避免出于设计原因。但是,如果您有需要使用它的特定要求,了解其性能特征可以帮助您做出明智的决策。
GCC 特定见解
在 GCC 中,使用RTTI 会使简单测试程序的二进制大小增加几百字节。这似乎违反直觉,但这很可能是由于在没有 RTTI 的情况下在 STL 代码中进行的调整所致。
结论
RTTI 的成本是特定于实现的在做出设计选择时应仔细考虑。通过了解底层机制和性能影响,开发人员可以就是否以及如何在其应用程序中使用 RTTI 做出明智的决定。
以上是C 中运行时类型信息 (RTTI) 的性能成本是多少?的详细内容。更多信息请关注PHP中文网其他相关文章!