c++ - C++ 风格转换对性能的影响?

标签 c++ performance casting

我是 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/

相关文章:

c++ - 将 OpenSSL 静态库添加到 vc++ 项目

php - Python + Django 或 PHP + Zend Framework

c# - 当 'object' 的某个字段可以有多种类型时,如何访问它而不将其转换为一种类型?

java - "must be an array type but is resolved to char"井字游戏程序错误

c++ - 从 QImage 获取原始数据

c++ - GET_WHEEL_DELTA_WPARAM 从不返回负数

c++ - 带有接受 C++ 集参数的类的自定义 key_comp

asp.net-mvc - ViewResult.ExecuteResult 花费太长时间

php - 非常慢的 mysql 请求 + php

c# - 编译器无法转换受约束的泛型类型