Size: a a a

2019 November 11

AO

Alexey Otts in Kotlin JVM
Я хочу сделать сравнительный анализ своей поделки с текущими мастодонтами
источник

AE

Alexandr Emelyanov in Kotlin JVM
Alexey Otts
Моя твоя не понимать, это не ответ на вопрос
на машине запущена база, три микросервиса, первый дергает два остальных, второй ходит еще в базу, на каждый запрос в первый микросервис открывается минимум сокет в каждый микросервис и базу. попутно открываются еще видимо какие то дескрипторы.
допом к тому что уже запущено в системе и заканчиваются системные дескрипторы
источник

AE

Alexandr Emelyanov in Kotlin JVM
еще и тулза для нагрузки
источник

АО

Алексей Овсянников in Kotlin JVM
Alexandr Emelyanov
102 против 94 rps
Всё очень просто - без выигрыша по IO (блокирующим операциям) производительность корутин бесконечно стремится (но никогда не достигает) к производительности экзекуторов, поскольку это тоже переключения, тоже запуск чего-то на треде. Разница появляется, когда вам нужно ждать ответа из сети (например), то есть появляются операции, которые в классических тредах вешают поток:) на серваке из такого я сходу только ожидание соединения могу назвать, но пока у вас количество запросов на находится +/- на границе вашего числа тредов/тредов в диспетчере корутин - врядли вы почувствуете разницу
источник

АО

Алексей Овсянников in Kotlin JVM
А вот на уровне соединений с базой или еще чего такого - корутины вполне могут выиграть:)
источник

AO

Alexey Otts in Kotlin JVM
Куда они могут выиграть, если это просто враппер над веб флаксом?
источник

АО

Алексей Овсянников in Kotlin JVM
А если это еще и враппер - то тем более, согласен
источник

АО

Алексей Овсянников in Kotlin JVM
На корутинах можно сделать 100500 тредов для IO, которые в итоге (почти) ничего не будут стоить и все операции отправлять туда, таким образом на время ожидания освобождая поток:)
источник

AO

Alexey Otts in Kotlin JVM
Алексей Овсянников
На корутинах можно сделать 100500 тредов для IO, которые в итоге (почти) ничего не будут стоить и все операции отправлять туда, таким образом на время ожидания освобождая поток:)
Вот это неправда
источник

АО

Алексей Овсянников in Kotlin JVM
Alexey Otts
Вот это неправда
?
источник

AO

Alexey Otts in Kotlin JVM
Не тредов, а корутин, потоки будут освобождаться только на асинхронном ио, с тем же jdbc не прокатит
источник

BV

Boris Vanin in Kotlin JVM
Алексей Овсянников
На корутинах можно сделать 100500 тредов для IO, которые в итоге (почти) ничего не будут стоить и все операции отправлять туда, таким образом на время ожидания освобождая поток:)
Треды всегда дорогие. Как минимум они стоят памяти
источник

АО

Алексей Овсянников in Kotlin JVM
Boris Vanin
Треды всегда дорогие. Как минимум они стоят памяти
Их можно раз создать и переиспользовать:) то, чтотони стоят памяти - согласен
источник

АО

Алексей Овсянников in Kotlin JVM
Alexey Otts
Не тредов, а корутин, потоки будут освобождаться только на асинхронном ио, с тем же jdbc не прокатит
В корутинах поток будет освобождаться в каждый suspend момент - например, при смене диспетчера/контекста выполнения
источник

АО

Алексей Овсянников in Kotlin JVM
Алексей Овсянников
В корутинах поток будет освобождаться в каждый suspend момент - например, при смене диспетчера/контекста выполнения
Так что я не ошибся - потоков
источник

BV

Boris Vanin in Kotlin JVM
Алексей Овсянников
Их можно раз создать и переиспользовать:) то, чтотони стоят памяти - согласен
Ну так значит нельзя создать 100500 🤷‍♂
источник

AO

Alexey Otts in Kotlin JVM
Создай попробуй 100500 потоков и посмотри сколько оно будет у тебя кушать
источник

АО

Алексей Овсянников in Kotlin JVM
Alexey Otts
Создай попробуй 100500 потоков и посмотри сколько оно будет у тебя кушать
Пробовал:)
источник

АО

Алексей Овсянников in Kotlin JVM
На моем ноуте с i7 и 8 гб оперативы вполне жило
источник

AE

Alexandr Emelyanov in Kotlin JVM
Алексей Овсянников
А вот на уровне соединений с базой или еще чего такого - корутины вполне могут выиграть:)
Так там как раз база и межсервисные запросы, самое оно
источник