[英]C++ reference to value, not copy
我有線
double A =uJoinFeatures1.Values [i];
這將創建一個double值的副本
struct udtJoinFeatures
{
double Values[17];
};
但是出於速度原因,我只想引用該值而不復制它。 請問我該怎么辦?
我試過了
double A =&uJoinFeatures1.Values [i];
但這是不可能的。
您聲明A
作為對double
的引用:
double& A = ...;
但是,在這種情況下,速度實際上並不會增加。 在64位計算機上, double
和指針(實際上是引用)都是64位,復制量相同。 並且由於引用實際上只是指針的另一個名稱,因此在訪問引用時您將具有間接引用,這可能比使用double
添加了更多指令。
並不是說它無論如何都是可以測量的,除非您對一個緊密循環中的數百萬個項目執行此操作。
特別是出於速度原因,請務必復制!
間接訪問可能比復制幾個字節要花更多的錢,尤其是因為它使編譯器更難將值保留在寄存器中(必須首先優化引用;引用只能指向內存)。
無論如何,這絕對是過早的優化。 在確保所有算法都具有最佳復雜性,最小化分配,工作重復和所有其他算法問題之后,應確保內聯循環內聯,然后您將發現編譯器將使用普通復制變體。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.