Информация об изменениях

Сообщение Re[11]: [Этюд] - синхронный vs асинхронный от 01.10.2021 17:46

Изменено 01.10.2021 17:52 Serginio1

Re[11]: [Этюд] - синхронный vs асинхронный
Здравствуйте, Shmj, Вы писали:

S>Что жалко что ли на 64 битке она практически бесконечна.

Проблема не в памяти, а в создании и переключении потоков.
И не забывай в твоем варианте метод практически не использует данных, а вот если будет использовать стек то он и физически будет расти.
То есть ты сознательно тормозишь свое приложения. Вместо того что бы при большом одновременном количестве запросов ставить их в очередь ты запускаешь новые или берешь древние потоки.
Там и кэш процессора сбрасывается.
Переключение контекста и производительность

Кроме того, что очень важно, при переключении контекста происходят следующие программно-незаметные аппаратные действия, влияющие на производительность:

Происходит очистка конвейера команд и данных процессора
Очищается TLB, отвечающий за страничное отображение линейных адресов на физические.
Кроме того, следует учесть следующие факты, влияющие на состояние системы:

Содержимое кэша (особенно это касается кэша первого уровня), накопленное и «оптимизированное» под выполнение одного потока, оказывается совершенно неприменимым к новому потоку, на который происходит переключение.
При переключении контекста на процесс, который до этого долгое время не использовался (см. Подкачка страниц), многие страницы могут физически отсутствовать в оперативной памяти, что порождает подгрузку вытесненных страниц из вторичной памяти.

Re[11]: [Этюд] - синхронный vs асинхронный
Здравствуйте, Shmj, Вы писали:

S>Что жалко что ли на 64 битке она практически бесконечна.

Проблема не в памяти, а в создании и переключении потоков.
И не забывай в твоем варианте метод практически не использует данных, а вот если будет использовать стек то он и физически будет расти.
То есть ты сознательно тормозишь свое приложения. Вместо того что бы при большом одновременном количестве запросов ставить их в очередь ты запускаешь новые или берешь древние потоки.
Там и кэш процессора сбрасывается.
Переключение контекста и производительность

Кроме того, что очень важно, при переключении контекста происходят следующие программно-незаметные аппаратные действия, влияющие на производительность:

Происходит очистка конвейера команд и данных процессора
Очищается TLB, отвечающий за страничное отображение линейных адресов на физические.
Кроме того, следует учесть следующие факты, влияющие на состояние системы:

Содержимое кэша (особенно это касается кэша первого уровня), накопленное и «оптимизированное» под выполнение одного потока, оказывается совершенно неприменимым к новому потоку, на который происходит переключение.
При переключении контекста на процесс, который до этого долгое время не использовался (см. Подкачка страниц), многие страницы могут физически отсутствовать в оперативной памяти, что порождает подгрузку вытесненных страниц из вторичной памяти.

Ну и если задачи короткие то они могут быть соизмеремы с временем переключения контекста