В 95% производительности - это чистые представительские модели беседует Мартин Томпсон, между 17 и 21 минутами, представлен такой код:
public class Queue
{
private final Object[] buffer;
private final int capacity;
// Rest of the code
}
В 20:16 он говорит:
Вы можете получить гораздо лучшую производительность, поэтому оставляя такие вещи, как
capacity
в этом есть правильная вещь.
Я попытался придумать пример кода, в котором capacity
будет намного быстрее, чем buffer.length
, но я потерпел неудачу.
- В параллельном мире. Но поле
length
такжеfinal
, JLS 10.7. Итак, я не вижу, как это может быть проблемой. - Когда кеш промахивается. я попробовал, вызвав
capacity
vsbuffer.length
миллион раз (с очередь, имеющая миллион элементов), но существенной разницы не было. Я использовал JMH для бенчмаркинга.
Не могли бы вы привести пример кода, который демонстрирует случай, когда capacity
превосходит buffer.length
с точки зрения производительности?
Чем более распространенный случай (часто замеченный в реальном коде), тем лучше.
Обратите внимание, что я полностью отнимаю аспект эстетики, чистый код, потенциал для повторного факторинга кода и т.д. Я прошу только о производительности.