2017-02-02 2 views
0

この特定のケースでは本当に問題にはなりませんが、より良い方法とは何でしょうか。私はあなたが1より大きい数字をハードコードするべきではなく、またIDがアセンブリ内のADDよりも速いと推測することを読んだので、後者は両方とも思っています。私は前者が良く見えると思うが。それとも良い方法がありますか?これはどれがより良い練習ですか/速いのですか?

for (int i = 0; i < CARDS_PER_HAND; i++) 
{ 
    playerHand[i] = getDeck[deckIndex]; 
    hellmuthHand[i] = getDeck[deckIndex + 1]; 
    dwanHand[i] = getDeck[deckIndex + 2]; 
    iveyHand[i] = getDeck[deckIndex + 3]; 
    negreanuHand[i] = getDeck[deckIndex + 4]; 
    deckIndex += 5; 
} 

または

for (int i = 0; i < CARDS_PER_HAND; i++) 
{ 
    playerHand[i] = getDeck[deckIndex]; 
    deckIndex ++; 
    hellmuthHand[i] = getDeck[deckIndex]; 
    deckIndex++; 
    dwanHand[i] = getDeck[deckIndex]; 
    deckIndex ++; 
    iveyHand[i] = getDeck[deckIndex]; 
    deckIndex ++; 
    negreanuHand[i] = getDeck[deckIndex]; 
    deckIndex ++; 
} 
+0

最初に優れています。あなたは割り当て操作が少ないです。 – SmallChess

+3

すっきりとしたオプティマイザは、そのコードを「何か最適なもの」にマッサージします。最も可読性の高いものを探してください。 – user508633

+2

'getDeck [deckIndex ++]'を使うこともできます。重要なことは、あなたが読んで維持するのが最も簡単だと感じるソリューションを使用することです。 –

答えて

2

本当の答えは、それを最適化するために、間違っている部分ですが、それはほんの少し速くデッキがシャッフルされている場合になります

Array.Copy(getDeck, CARDS_PER_HAND * 0, playerHand , 0, CARDS_PER_HAND); 
Array.Copy(getDeck, CARDS_PER_HAND * 1, hellmuthHand, 0, CARDS_PER_HAND); 
Array.Copy(getDeck, CARDS_PER_HAND * 2, dwanHand , 0, CARDS_PER_HAND); 
Array.Copy(getDeck, CARDS_PER_HAND * 3, iveyHand , 0, CARDS_PER_HAND); 
Array.Copy(getDeck, CARDS_PER_HAND * 4, negreanuHand, 0, CARDS_PER_HAND); 
deckIndex += CARDS_PER_HAND * 5; 
+0

デッキはシャッフルされていて、私はこのことを理解していません。 –

+0

@NOPdaCALLたとえば、 'CARDS_PER_HAND'が5の場合、 5番目の項目ごとではなく、最初の5項目を 'getDeck'から' playerHand'にコピーします。 – Slai

+0

Array.Copyを見て、とてもクールで、今起きていることが分かります。他の関数がdeckIndexの更新されたカウントに依存していると言っていましたが、今ではこれを追加しています。これはうまくいきます。外見部門には欠点しかありませんが、私の意見です。 –

関連する問題