C:高性能临时变量,以避免频繁的类型转换

时间:2014-12-17 21:00:52

标签: c performance variables temporary

((My_LengthilyNamedClass *)this)->someMember

...我厌倦了这些出现在我的代码库中,甚至在同一个函数中也很多次。

在C中处理此类事情的适当方法是什么?我知道将它复制到一个名称较短的正确类型的堆栈/自动变量是一种避免强制转换的方法,但我认为这会导致额外的,可能不必要的堆栈分配。

可以在个别函数中使用define,以使其更容易吗? define是要走的路吗?由于这是一个实时处理框架的代码,并且这些东西出现在任何地方,我理想地喜欢坚持任何最高效的。

2 个答案:

答案 0 :(得分:4)

编译器非常擅长优化。我认为你没问题:

My_LengthilyNamedClass *const ptr = this;

如果你真的是偏执狂,你可以使用宏:

#define THIS ((My_LengthilyNamedClass *)this)

THIS->someMember = 5;

#undef THIS

答案 1 :(得分:2)

如果你有很多这些演员阵容,你可以改变:

((My_LengthilyNamedClass *)this)->someMember

My_LengthilyNamedClass *that = (My_LengthilyNamedClass *) this;

/ * ... * /

that->someMember