不同类型初始化的性能

问题描述:

我正在移植一些代码,原来的作者显然非常关心从代码中挤出尽可能多的性能。不同类型初始化的性能

整个(而且也成百上千的源文件的),有很多这样的事情:

float f = (float)(6); 
type_float tf = (type_float)(0); //type_float is a typedef of float xor double 

总之,笔者试图进行分配等于变量的RHS被分配到。我认为,目的是强迫编译器制作例如将第一个示例中的6复制到6.0f中,以便在将该值复制到变量中时不会发生转换开销。

对于类似于第二个例子的情况,这实际上是有用的,其中文字的正确形式({0.0f,0.0}之一)未知/可以从远离的线改变。但是,如果将文字转换并存储到临时文件中,然后进行复制,而不是在副本上进行转换,则可以看到存在问题。

这位作者是在这里的东西?所有这些文字实际上是否与预期类型一起存储?或者这只是源文件位的大量浪费?在现代代码中处理这类案件的最佳方式是什么?

注意:我相信这适用于C和C++,所以我已经应用了两个标记。

+0

没有与表演有关的理由把演员放在右手边。很确定这是一个文体选择。 – Brian 2014-09-05 21:06:09

+0

老实说,在这两个表演都是表现无关紧要。不管(如果可能)转换都会发生。提交人很可能通过任务授权来压制正在发布的过多警告。 (即失去精确度等)。 – WhozCraig 2014-09-05 21:06:13

+0

为什么生产质量编译器不能为自己做这么简单的事情? – Leushenko 2014-09-05 21:06:24

这是一个完整的浪费。现代优化编译器不会保留任何中间值的跟踪,而是直接使用最终的正确值进行初始化。其中没有任何意义,默认转换应该始终做正确的事情,在这里。是的,这应该适用于C和C++,它们在行为上应该没有太大差别。