簡體   English   中英

C ++引用值,而不是復制

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM