2017-02-02 2 views
0

Не имеет значения для этого конкретного случая, но что было бы лучше и что было бы быстрее? Я думаю, что последнее для обоих, поскольку я прочитал, вы не должны жестко кодировать числа, большие, чем 1, и также полагать, что INC будет быстрее, чем ADD в Assembly. Хотя я думаю, что первое выглядит лучше. Или есть лучший способ?Какая из них лучше или быстрее?

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 элементов из 'getDeck' в' playerHand' вместо каждого 5-го элемента. – Slai

+0

Посмотрите на Array.Copy, довольно круто, и я вижу, что происходит сейчас. Собирался сказать, что другие функции зависели от обновленного счета deckIndex, но вы добавили, что сейчас это хорошо работает. Только недостаток находится в отделе взглядов, но это только мое мнение. –

Смежные вопросы