Параметры 1: < /p>
boolean isFirst = true;
for (CardType cardType : cardTypes) {
if (!isFirst) {
descriptionBuilder.append(" or ");
} else {
isFirst = false;
}
//other code not relevant to this theoretical question
}
< /code>
опция 2: < /p>
boolean isFirst = true;
for (CardType cardType : cardTypes) {
if (!isFirst) {
descriptionBuilder.append(" or ");
}
isFirst = false;
//other code not relevant to this theoretical question
}
< /code>
мой анализ < /strong>: оба кода имеют одинаковую семантическую. < /p>
1 -й код) i «Не уверен, есть ли этот код два ветви (с точки зрения предиктора филиала) или одна ветвь. Я изучал http://en.wikipedia.org/wiki/x86_instruction_listings, но не смог понять, что есть инструкция x86, что -то вроде «если бы предыдущее значение было ложным прыжком», чтобы избежать двух предсказаний ветви (очень плохо ) < /p>
2 -й код), скорее всего, всегда будет выполнять простое перемещение (для регистрации или элемента, скорее всего, уже в кэше), что относительно недорого (максимально несколько циклов)
Итак, я считаю, что, если процессор декодирует в инструкции микрокода, не может сделать что -то умное или x86 Br />
Я понимаю, что это чисто теоретический вопрос, поскольку на практике эта ветвь может сделать приложение на 0,000000002% быстрее или что -то в этом роде. < /p>
Я что -то пропустил? Вопрос < /p>
Edit2: Вопрос о архитектуре Intel для прогнозирования филиалов (Pentium и более новых процессоров).
Подробнее здесь: https://stackoverflow.com/questions/283 ... makes-code
Прогнозирование филиала: делает ли избегание ветви «else» для простых операций быстрее код (пример Java)? ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
[[Вероятно,]] избыточно, если [[[маловероятно]] существует в ветви if-else в C ++ 20?
Anonymous » » в форуме C++ - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-
-
-
[[Вероятно,]] избыточно, если [[[маловероятно]] существует в ветви if-else в C ++ 20?
Anonymous » » в форуме C++ - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-