Устройство Вареного пудинга ускоряет Код Java?

Используя компилятор Sun 1.6 запаса и JRE/JIT, действительно ли это - хорошая идея использовать вид обширных, разворачивают иллюстрируемый Устройством Вареного пудинга для разворачивания цикла? Или это заканчивается как запутанность кода без выигрыша в производительности?

Профильные инструменты Java, которые я использовал, менее информативны о линию за линией использовании ЦП, чем, скажем, valgrind, таким образом, я надеялся увеличивать измерение с опытом других людей.

Обратите внимание, что, конечно, Вы не можете точно кодировать Устройство Вареного пудинга, но можно сделать, основные разворачивают, и это - то, о чем я задаюсь вопросом.

        short stateType = data.getShort(ptr);
        switch (stateType) {

        case SEARCH_TYPE_DISPATCH + 16:
            if (c > data.getChar(ptr + (3 << 16) - 4)) {
                ptr += 3 << 16;
            }
        case SEARCH_TYPE_DISPATCH + 15:
            if (c > data.getChar(ptr + (3 << 15) - 4)) {
                ptr += 3 << 15;
            }
         ...

вниз через многие другие значения.

8
задан Lazer 28 August 2010 в 01:15
поделиться

2 ответа

Не имеет большого значения, хорошая ли это идея (или нет), потому что она не будет компилироваться.

РЕДАКТИРОВАТЬ: Это явно упоминается в JLS :

Уловка, известная как устройство Даффа, может использоваться в C или C ++ для развертывания цикла, но это недопустимый код в программировании на Java. language:

Или, более прямо (из того же раздела):

Отличный хак на C, Том, но здесь он не действует.

РЕДАКТИРОВАТЬ: Чтобы ответить на ваш (слишком) общий вопрос, обычно нет. Обычно следует полагаться на JIT.

24
ответ дан 3 November 2019 в 13:09
поделиться

Вы игнорируете тот факт, что Java компилируется в байт-коды для виртуальной машины, ориентированной на стек. Какой бы трюк с низкоуровневой оптимизацией вы ни пытались на уровне Java, в основном он неэффективен. Настоящая оптимизация происходит, когда JIT-компилятор создает сборку для целевой архитектуры, процесс, который вы по большей части не можете ни контролировать, ни о котором не заботитесь.

Вместо этого вы должны оптимизировать для получения гораздо большего изображения. Позвольте компилятору JIT обрабатывать низкоуровневую оптимизацию.

9
ответ дан 3 November 2019 в 13:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: