2
我正在移植一些代碼,原來的作者顯然非常關心從代碼中擠出儘可能多的性能。不同類型初始化的性能
整個(而且也成百上千的源文件的),有很多這樣的事情:
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++,所以我已經應用了兩個標記。
沒有與表演有關的理由把演員放在右手邊。很確定這是一個文體選擇。 – Brian 2014-09-05 21:06:09
老實說,在這兩個表演都是表現無關緊要。不管(如果可能)轉換都會發生。提交人很可能通過任務授權來壓制正在發佈的過多警告。 (即失去精確度等)。 – WhozCraig 2014-09-05 21:06:13
爲什麼生產質量編譯器不能爲自己做這麼簡單的事情? – Leushenko 2014-09-05 21:06:24