【发布时间】:2016-09-15 07:36:48
【问题描述】:
我看到有人建议在高性能应用程序中尽可能避免对变量进行类型转换。我从来不明白这是什么原因,我倾向于进行很多次类型转换,主要是为了避免编译器警告。这对性能有任何影响吗? 常见代码:
1) struct X * 传递给一个接受 void * 的函数
2)uint16_t 类型转换为uint32_t
【问题讨论】:
-
类型转换主要在编译时完成(不确定定点到浮点,反之亦然,但最肯定的是指针类型),因此没有任何运行时影响。
-
常识表明与浮点的转换需要一些 CPU 周期...
-
@barakmanos 指向不同类型的指针不限制大小相等。
-
@barakmanos 如果您可以将其整合为答案 - 社区将不胜感激 :) 我太懒了..
-
我倾向于多次进行类型转换,主要是为了避免编译器警告。你做错了。那只是在掩盖实际问题。可以这样想:编写您用来将源代码转换为可运行二进制文件的编译器的人花了额外的时间告诉您,他们认为您正在做的事情很狡猾。不要忽视这一点——他们比你更了解将代码转换为可运行的二进制文件。
标签: c performance x86