Комментарии:
Огромное спасибо за разъяснение!!! Ох уж эти холивары: придумывают синтетический тест, никак не соотносящийся с реальностью, получают какие-то результаты, не анализируют, а просто возводят в абсолют, и потом орут на весь мир, что это - гамно и это - гамно и мнение хрен оспоришь ! 😪
ОтветитьОчень захотелось увидеть результат Django на sleep 0,2
ОтветитьОчень грамотный и доходчивый контент.
ОтветитьОй а что же будет, если wrk не в один поток запустить, а в 10
ОтветитьУже любому балбесу дают шанс понаписать ересь в Habr, какое отношение имеет однотипный никак не меняющийся запрос к программированию..., это во-первых, во-вторых если грамотно пользоваться общей памятью, а не пихать разными ядрами в конкурентный стек памяти ссылки на запрос, то получится что 4 ядра в 8 потоков будут примерно в 8 раз быстрее и в первом случае так же само как Уважаемый и любимый нами автор Диджитализируй показал в своем грамотном тесте...
Такие люди как автор с Habr вводят в глубокое заблуждение новичков, либо он просто купленный и идет тенденция как-то притормозить развитие асинхронки.
И на последок, самое главное, ребята, о каком н** синхронном программировании говорить в если чисто логически предел в 5 ГГц сверхсложная задача, а ядер напихать можно и 32 и тд, а если речь о промышленных масштабах, то там одаренные в программировании специалисты посмотрят на этого ЧСВ и максимум в пол-улыбки "параллельно" пойдут дальше по делам...
А можно видео про то чем отличается многопроцессинг, многопоточность и асинхронность?
С примерами на Python
Круто, спасибо)
ОтветитьМне кажется, этот тот случай, когда надо чекнуть теорию раньше, чем практику. Очевидно же, что асинхронка это техника параллельного выполнения задач в ситуации избыточного времени ожидания. Соответственно, если просто осознать этот факт, то и тесты станут не нужны. Хотя для видео, естественно, живые тесты это очень круто.
Ответитьспасибо за подробное объяснение)
Ответитькартинка топ
ОтветитьВсе вроде бы так, да есть один нюанс. Вы бы количество воркеров во тором тесте для синхронного кода раз в 10 увеличили бы. Глядишь результат интересней мог получился.
Ответитьспасибо
Ответить🔥
ОтветитьХорошо что досмотрел а то уже расстроился.
ОтветитьСпасибо за видео. А чем записываете экран когда пишете код, чтобы было прозрачно?
ОтветитьГлавный вопрос в том, почему все тестят запросы в базу. Кто ее тюнил? Этими тестами вы показываете скорость ответа движка базы на синхронные и асинхронные запросы. Наиболее правильным были бы проверки с обработкой данных в памяти(допустим математические операции), которые не связаны с внешними обьектами в виде бд.
ОтветитьСтоит добавить что на Питоне пишут не только веб) Помню в 2017 писал пайплайн обработки данных, там была куча операций "выполняемых" на бэкенде монго. Прототип написали синхронный, самый простой. Работало 11 часов.. Переписали на async подачу данных блоками - ох, оказывается за 45 минут все считается :) Как я перестал бояться и полюбил асинхронность :)
ОтветитьКак также перемещаться по файлам в Vim ?
ОтветитьКрасавчик
ОтветитьОчень интерестно :)
ОтветитьОфигенно 👍
ОтветитьАПИ-Чапи
ОтветитьАиохттп - кровь из мозга
ОтветитьЯ думаю, что даже в примере, когда запрос долгий, можно сказать, что синхронный ВОЗМОЖНО будет быстрее. Стоит различить две ситуации: когда база данных находится на той же машине, что и сервис, и когда они разделены. Показанный пример - это пример, когда они разделены (запрос в бд не нагружает железо сервиса). Но если запрос в бд будет активно нагружать железо сервиса, асинхронные фреймворки не будут уже так себя комфортно чувствовать. Хотя много зависит от запроса: он может быть на чтение большого кол-во данных, а может на построение новой сложной структуры...
ОтветитьСпасибо за труд! Смотрю с удовольствием.
ОтветитьКороче, понятно. Если в БД бардак, то асинк наше всё. Если нужна супер скорость - оптимизируй БД ✌️
ОтветитьКороче, проще говоря, понимайте суть вещей ребята(для чего они создавались, для упрощения или ускорения каких ситуаций). В программировании всё придумывается на основе опыта. Понимая суть, включите голову, не понимая сути, идите получать опыт, чтобы её понять)
ОтветитьЭто видео было полезным, как и другие
Алексей - молодец!
Спасибо за видео!
Ответитьспасибо за подробный разбор
ОтветитьПравильнее тестировать/измерять на реальном проекте, как есть. А синтетические тесты - как дополнение, на всякий случай (граничные случаи).
ОтветитьНа своей же машине тестить свою же машину на запросы, ну капец
ОтветитьРебят, что такое воркер простыми словами? В этих гуглах какие-то сложные формулировки :(
ОтветитьСпасибо, очень интересно и полезно.
Было бы интересно увидеть тест с участием asyncpg вместо aiopg.
Также интересно, как правильно профилировать приложения, чтобы понимать, на что уходит больше всего процессорного времени: на ввод-вывод, либо на вычисления, и сколько на что из этого уходит.
Если вы пишете высоконагруженный сервер - раст или плюсы имхо… переубедите
ОтветитьРазнес недоумка)))
ОтветитьА почему тест скорости делается на записи в бд?
Следует помнить, что django вообще не асинхронный, разработчики последние несколько лет добавляют в него асинхронный функционал, но ядро так и осталось синхронным.
Сам питон ни разу не асинхронный: все эти якобы асинхронные "штучки" используют GIL (global interpreter lock).
И если уж сравнивать че то, то с чистым gil без фреймворков: последний быстрее.
Я верно понял по результатам тестов, что, прежде, чем выбирать между асинхронным и синхронным фреймворком, надо потестить максимальное время запроса к БД и уже от него отталкиваться?
Ответитьа как же PyPy?
Ответитьо чем гаварить, если у самих микрософт я видел питонский код полное дерьмо. все эти фласки и джанги написаны дегенератами. полная деградация инженеров
ОтветитьКак ни крути - смешные цыфры, вшивый Rust будет быстрее всего этого на 2 порядка
ОтветитьСпасибо большое дружище! Очень познавательно👍
Ответитькороче все под задачу
ОтветитьТы не реально грамотный, как и как долго нужно учиться чтобы преблизиться к твоим результатам? P.s. учусь на фулстак 3 года с нуля и чувствую семя делетантом от слова совсем
Ответитьа если микс?
ОтветитьБлагодарю
ОтветитьВ целом не верно сравнивать что быстрее так как правильная реализация имеет смесь подходов, т.е. как Алексей и сказал, потоки для CPU bound операций , а асинхроннщину для I/O bound , но так или иначе асинхроншина это must have в современных приложениях, поэтому Node.js наше всё 😂.
Ответить