Сколько сопрограмм это слишком много?

Дональд Кнут говорит («Искусство компьютерного программирования», «Третье издание», том 1, стр. 435):

Несколько авторов начали около 1975 года, чтобы назвать пул доступной памяти " heap. "

Он не говорит, какие авторы и не дает ссылок на какие-либо конкретные документы, но говорит, что использование термина« куча »в отношении очередей приоритетов традиционный смысл слова.

3
задан Aleksander Stelmaczonek 19 March 2019 в 09:14
поделиться

3 ответа

Вес памяти сопрограммы масштабируется с глубиной трассировки вызова от блока компоновщика сопрограмм до точки приостановки. Каждый вызов suspend fun добавляет еще один объект Continuation в связанный список, и это сохраняется, пока сопрограмма приостановлена. Грубая цифра для одного Continuation экземпляра составляет 100 байтов.

Итак, если у вас есть глубина трассировки вызовов, скажем, 5, то это составляет 500 байтов на элемент. Миллион предметов составляет 500 МБ.

Однако, если ваш поисковый код не включает в себя блокирующие операции, которые могли бы оставить поток незанятым, вы ничего не получите от сопрограмм. Ваша задача больше похожа на пример паралеллизма данных , и вы можете решить его очень эффективно, используя API java.util.stream (как отметил пользователь marstran в комментарии).

0
ответ дан Ilya 19 March 2019 в 09:14
поделиться

Согласно руководству по запуску котлин-сопрограммы , в примере запускаются 100К сопрограммы. Я верю, что вы намерены сделать именно то, для чего предназначена kotlin сопрограмма.

0
ответ дан Ricky Mo 19 March 2019 в 09:14
поделиться

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

Документация (для Kotlin):

HashMap: https://developer.android.com/reference/kotlin/java/util/HashMap

TreeMap: https://developer.android.com/reference/kotlin/java/util/TreeMap

0
ответ дан Blackd 19 March 2019 в 09:14
поделиться
Другие вопросы по тегам:

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