Я кодирую Ай в шахматах, и для этого вам нужен способ подсчитать кусочки, чтобы выяснить, насколько хороша позиция. И когда я проверил свой метод, который подсчитывает части, я заметил, что это было немного медленно, поэтому я отчасти проверил его, чтобы увидеть, что занимало так долго, и я нашел что -то чрезвычайно странное. Для фрагмента кода, который я написал ниже, когда я запускаю 7 или менее из 10 строк кода, он работает очень быстро всего около 10 миллионов секунд, чтобы запустить 100 миллионов раз. Но когда я запускаю все 10 строк кода, для работы 100 миллионов секунд займет 1000 миллионов секунд, это на 100 раз замедление, когда я запускаю все. И не имеет значения, какую 3 линии я исключаю, чтобы ускорить его, я пробовал много перестановки, и пока у меня есть 7 или менее из 10 линий, это идет быстро, и если у меня есть более 7, это идет медленно каждый раз. Я спросил CHATGPT, и он сказал мне, что это были оптимизации JIT, которые вызывали колебания, но это не имеет никакого смысла, потому что то, как я сделал свой тест на скорость, я добавил общий результат, чтобы запретить какую -либо оптимизацию JIT и заставлять его выполнять всю работу каждый раз. Я не могу позволить себе иметь медленный код оценки, шахматы AI лучше, чем быстрее. Пожалуйста, помогите. < /P>
int eval = 0;
eval += (whitePawnCount * 82 * mgPhase) + (whitePawnCount * 94 * egPhase);
eval += (whiteKnightCount * 337 * mgPhase) + (whiteKnightCount * 281 * egPhase);
eval += (whiteBishopCount * 365 * mgPhase) + (whiteBishopCount * 297 * egPhase);
eval += (whiteRookCount * 477 * mgPhase) + (whiteRookCount * 512 * egPhase);
eval += (whiteQueenCount * 1025 * mgPhase) + (whiteQueenCount * 936 * egPhase);
eval -= (blackPawnCount * 82 * mgPhase) + (blackPawnCount * 94 * egPhase);
eval -= (blackKnightCount * 337 * mgPhase) + (blackKnightCount * 281 * egPhase);
eval -= (blackBishopCount * 365 * mgPhase) + (blackBishopCount * 297 * egPhase);
eval -= (blackRookCount * 477 * mgPhase) + (blackRookCount * 512 * egPhase);
eval -= (blackQueenCount * 1025 * mgPhase) + (blackQueenCount * 936 * egPhase);
return eval;
Подробнее здесь: https://stackoverflow.com/questions/796 ... d-take-muc
Добавление еще трех линий арифметических расчетов заставляет этот метод займет гораздо больше времени [закрыто] ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как сделать рендеринг линий более равномерным или более гладким для тонких линий?
Anonymous » » в форуме CSS - 0 Ответы
- 25 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как сделать рендеринг линий более равномерным или более гладким для тонких линий?
Anonymous » » в форуме CSS - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-