Что я могу сделать в коде Java для оптимизации для кэширования ЦП?

У клиента Windows "TortoiseSVN" есть функция "Export". Экспорт создает копию в другом месте в различной папке без всех тех ".svn" папок в них. Можно экспортировать или из репозитория или из локальной копии с опцией включать неимеющие версию файлы.

47
задан Hanno Fietz 5 October 2009 в 08:15
поделиться

3 ответа

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

Это не означает, что общие принципы, такие как локальность ссылки не имеет значения. Они есть, но я считаю, что использование массивов и тому подобного должно быть ориентированным на производительность, идиоматическим кодом, но не «хитрым».

HotSpot и другие оптимизирующие среды выполнения чрезвычайно умны в том, как они оптимизируют код для конкретных процессоров. (Например, ознакомьтесь с этим обсуждением. ) Если бы я был опытным программистом на машинном языке, я бы написал машинный язык, а не Java. А если нет, Было бы неразумно думать, что я мог бы лучше оптимизировать свой код, чем эксперты.

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

Если вам нужна хорошая производительность, сохраняйте простоту. Команды действительно умных людей работают над тем, чтобы сделать это быстро.

даже если вы знаете, как лучше всего реализовать что-то для конкретного процессора, прелесть Java заключается в том, что ее можно записать один раз - запустить везде. Умные уловки для «оптимизации» Java-кода, как правило, затрудняют распознавание возможностей оптимизации для JIT. Оптимизатору легче распознать простой код, соответствующий общепринятым идиомам. Таким образом, даже когда вы получаете лучший Java-код для своей тестовой системы, этот код может ужасно работать на другой архитектуре или, в лучшем случае, не использовать преимущества улучшений в будущих JIT.

Если вам нужна хорошая производительность, сохраняйте простоту. Команды действительно умных людей работают над тем, чтобы сделать это быстро.

даже если вы знаете, как лучше всего реализовать что-то для конкретного процессора, прелесть Java заключается в том, что ее можно записать один раз - запустить везде. Умные приемы «оптимизации» Java-кода, как правило, затрудняют распознавание возможностей оптимизации для JIT. Оптимизатору легче распознать простой код, соответствующий общепринятым идиомам. Таким образом, даже когда вы получаете лучший Java-код для своей тестовой системы, этот код может ужасно работать на другой архитектуре или, в лучшем случае, не использовать преимущества улучшений в будущих JIT.

Если вам нужна хорошая производительность, сохраняйте простоту. Команды действительно умных людей работают, чтобы сделать это быстро.

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

Если вам нужна хорошая производительность, сохраняйте простоту. Команды действительно умных людей работают, чтобы сделать это быстро.

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

Если вам нужна хорошая производительность, сохраняйте простоту. Команды действительно умных людей работают над тем, чтобы сделать это быстро.

будь проще. Команды действительно умных людей работают над тем, чтобы сделать это быстро.

будь проще. Команды действительно умных людей работают над тем, чтобы сделать это быстро.

18
ответ дан 26 November 2019 в 19:54
поделиться

Если вы дошли до того, что улучшение в несколько процентов имеет значение, используйте C, где вы получите улучшение на 50-100%!

Если вы думаете, что легкость использования Java делает его более удобным для использования языком, тогда не облажайтесь с сомнительной оптимизацией.

Хорошая новость заключается в том, что Java сделает много скрытых вещей для улучшения вашего кода во время выполнения, но она почти наверняка не будет выполнять ту оптимизацию, о которой вы говорите.

Если вы решите использовать Java, просто напишите свой код как можно яснее, совсем не принимая во внимание незначительные оптимизации. (Основные из них, такие как использование правильных коллекций для правильной работы, отсутствие выделения / освобождения объектов внутри цикла и т. Д., По-прежнему имеют смысл)

6
ответ дан 26 November 2019 в 19:54
поделиться

В меру мои знания: Нет. Вы должны писать в машинном коде, чтобы получить такой уровень оптимизации. Со сборкой вы в шаге от вас, потому что больше не контролируете, где хранятся вещи. С компилятором у вас два шага, потому что вы даже не контролируете детали сгенерированного кода. С Java вы в трех шагах, потому что JVM интерпретирует ваш код на лету.

Я не знаю никаких конструкций в Java, которые позволили бы вам управлять вещами на таком уровне детализации. Теоретически вы можете косвенно повлиять на это тем, как вы организуете свою программу и данные, но вы так далеко, что я не

3
ответ дан 26 November 2019 в 19:54
поделиться
Другие вопросы по тегам:

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