Last active
March 10, 2019 12:20
-
-
Save ezhov-da/8cad608807ee5af6b8bf12c8dbcb1433 to your computer and use it in GitHub Desktop.
java функциональные интерфейсы (lambda expressions)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<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