C++におけるいくつかのデータ交換方法の効率比較

1664 ワード

2つのデータ交換はプログラミングでよく使用されます.たとえば、ソートアルゴリズムでよく使用されます.次に、よく使用される3つの方法を紹介し、交換に多く使用されるプログラムで効率を向上させるために、それらの効率を比較します.
交換する2つのデータがdata_であると仮定します.1とdata_2
1つ目の方法は、一時tempを使用します.コードは次のとおりです.
temp  =  data_1;
data_1  =  data_2;
data_2  =  temp;

第2の方法は,追加の記憶領域を直接用いずに2つのデータ上で直接動作するが,この方法は2つの数を加算する際に境界を越える問題を生じる可能性がある.コードは次のとおりです.
//  data_11 = data_1, data_22 = data_2   
//data_1 = data_11 + data_22
//data_2 = data_11 + data_22 - data_22 = data_11
//data_1 = data_11 + data_22 - (data_11 + data_22 - data_22) =data_22
data_1  =  data_1  + data_2;
data_2  =  data_1  - data_2;
data_1  =  data_1  - data_2;
 
   
   
  

        , :

data_1 ^= data_2;
data_2 ^= data_1;
data_1 ^= data_2;

に、 テストを い、 について、 の を い、 を します.コードは の りです.
const int num = 100000000;
int main(int argc, char **argv)
{
    int data_1 = 1234, data_2 = 5678, temp = 0;
    clock_t start = 0, finish = 0, duration = 0;

    //  50 ,   
    for (int i=0; i<50; ++i)
    {
        start = clock();
        for (int i=0; i

:
1つ の : 334ミリ
2つ の : 879ミリ
3つ の : 799ミリ
その , 1の は も であり, 1の は なメモリ を めているが, された3 のコードはいずれも であり, に の2つの と あるいはより いことが かった.したがって, が きい は, 1の が され, が く, も しやすい.