我是 C++ 风格转换的新手,我担心使用 C++ 风格转换会破坏我的应用程序的性能,因为我有一个 real-time-critical deadline在我的中断服务例程中。
我听说有些强制转换甚至会抛出异常!
我想使用 C++ 样式转换,因为它会使我的代码更“健壮”。但是,如果性能受到影响,那么我可能不会使用 C++ 样式转换,而是会花更多时间测试使用 C 样式转换的代码。
有没有人做过任何严格的测试/分析来比较 C++ 风格转换和 C 风格转换的性能?
你的结果是什么?
你得出了什么结论?
最佳答案
如果 C++ 风格的转换可以在概念上被 C 风格的转换取代,那么就不会产生任何开销。如果不能,如 dynamic_cast
的情况,没有 C 等效项,您必须以一种或另一种方式支付成本。
以如下代码为例:
int x;
float f = 123.456;
x = (int) f;
x = static_cast<int>(f);
使用 VC++ 为两个强制转换生成相同的代码 - 代码是:
00401041 fld dword ptr [ebp-8]
00401044 call __ftol (0040110c)
00401049 mov dword ptr [ebp-4],eax
在转换为引用时,唯一可以抛出的 C++ 转换是 dynamic_cast
。为避免这种情况,请转换为一个指针,如果转换失败,该指针将返回 0。
关于c++ - C++ 风格转换对性能的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/674982/