Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save ezhov-da/8cad608807ee5af6b8bf12c8dbcb1433 to your computer and use it in GitHub Desktop.
Save ezhov-da/8cad608807ee5af6b8bf12c8dbcb1433 to your computer and use it in GitHub Desktop.
java функциональные интерфейсы (lambda expressions)
<p>
Методы, которые подобно <b>filter</b> строят рецепты обработки Stream, но не приводят к порождению нового значения, называют <b><i>отложенными</b></i>.<br>
Методы, которые подобно <b>count</b>, порождают конечное значение на основе последовательности Stream, называются <b><i>энергичными</i></b>.
<p>
<p>
<b>Function</b>: Принимает единственный параметр, возвращает результат на основе значения параметра.<br>
<b>Predicate</b>: Принимает единственный параметр, возвращает булев результат на основе значения параметра.<br>
<b>BiFunction</b>: Принимает два параметра, возвращает результат на основе значения параметра.<br>
<b>Supplier</b>: Не принимает параметров, возвращает результат.<br>
<b>Consumer</b>: Принимает единственный параметр, не возвращает результата (void)
</p>
<pre>
Существует пять важных
факторов, от которых зависит производительность параллельных по-
токов.
 Объем данных. Величина ускорения при параллельной обра-
ботке зависит от объема входных данных. С декомпозицией за-
дачи на исполняемые параллельно подзадачи и последующим
объединением результатов сопряжены накладные расходы. По-
этому делать это имеет смысл лишь в том случае, когда данных
достаточно, чтобы эти расходы амортизировались. Мы изучали
эту проблему в разделе «Параллельные потоковые операции»
выше.
 Структура исходных данных. Любой конвейер операций обра-
батывает некоторый источник начальных данных, обычно кол-
лекцию. Ускорение, достигаемое за счет распараллеливания,
зависит от того, как источник разбит на несколько участков.
 Упаковка. Значения примитивных типов обрабатываются
быст рее, чем упакованных.
 Число ядер. В крайнем случае, когда имеется всего одно ядро,
распараллеливать операции не имеет смысла. Очевидно, что
чем больше доступно ядер, тем больше потенциальный вы-
игрыш от распараллеливания. На практике важно не общее
число процессорных ядер в машине, а количество ядер, доступ-
ных для использования во время выполнения. Поэтому на про-
изводительность влияют такие вещи, как число одновременно
исполняемых процессов и привязка потоков к ядрам (когда
определенные потоки должны выполняться строго на опреде-
ленных ядрах или процессорах).
Стоимость обработки элемента. Как и объем данных, этот
фактор является частью компромисса между выигрышем от
распараллеливания и накладными расходами на декомпози-
цию и объединение. Чем больше времени тратится на обра-
ботку каждого элемента потока, тем выше потенциальный вы-
игрыш от распараллеливания.
При использовании параллельной потоковой
</pre>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment