Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Moscow Julia Meetup #2 - Julia and Web under load
Search
Gleb Ivashkevich
June 14, 2019
Technology
68
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Moscow Julia Meetup #2 - Julia and Web under load
Gleb Ivashkevich
June 14, 2019
More Decks by Gleb Ivashkevich
See All by Gleb Ivashkevich
Moscow Julia Meetup #2 - Deep learning in Julia
phtraveller
0
52
Moscow Julia Meetup #1 - Julia and ML
phtraveller
0
86
Moscow Julia Meetup #1 - Julia and Web
phtraveller
0
70
Other Decks in Technology
See All in Technology
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
0
130
AI開発に用いられるHPC技術について
gpuunite_official
0
150
20分でわかるセキュアAPI
nwiizo
2
310
FDEの心得
noriakioji
5
6.4k
Agent 時代の Kaggle 展望 / kaggle-in-the-agentic-era
upura
1
850
SmartHR Engineering Team Deck
smarthr
1
3k
会社紹介資料 / Sansan Company Profile
sansan33
PRO
24
430k
トークンマネジメントでAIにとって働きやすい環境を実現する
hikaruegashira
0
120
なぜ Temporal の大小比較には compare しかないのか / Why Does Temporal Only Have compare() for Comparisons
kazukihayase
1
180
【GCC2026】大規模言語モデルを活用した内製検索サービスの社内展開や業務活用
bandainamcostudios
PRO
0
340
巨大気象データと戦う ― サロゲートモデル学習を高速化する圧縮技術
gpuunite_official
0
140
システム思考で問題に対処する
yussak
0
360
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
331
22k
It's Worth the Effort
3n
188
29k
Designing Experiences People Love
moore
143
24k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
440
Mind Mapping
helmedeiros
PRO
1
320
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
620
Building the Perfect Custom Keyboard
takai
2
840
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Accessibility Awareness
sabderemane
1
180
Ethics towards AI in product and experience design
skipperchong
2
350
Crafting Experiences
bethany
1
260
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.4k
Transcript
Moscow Julia Meetup #2 Владимир Филонов Julia и Web
whoami - Разрабатываю нагруженные и не очень системы. В основном
Python и Erlang/Elixir - Преподаю Python в LearnPython и OTUS - Экспериментирую с новыми технологиями и языками
Disclamer - Не использую Julia в production
Disclamer - Не использую Julia в production - Всё ещё
=)
В прошлый раз
Http.jl Pros - All-in-one - Хорошо развивается - Планируют стать
частью stdlib Cons - Низкоуровнево - Нет встроенного парсера JSON
Mux.jl Pros - Вся сила HTTP.jl - С сахаром Cons
- В HTTP.jl есть своя поддержка middleware - Всё еще встроенного парсера JSON
Bukdu.jl Pros - Генератор форм - Встроенная сериализация JSON Cons
- А вот десиарелизации JSON нет - С документацией не очень
Genie.jl Pros - Очень похож на MVC. Может почти всё
- Наконец полноценная работа с JSON Cons - Сложный старт - С документацией, как и везде - не очень
Нагрузка
- Микросервис смс-рассылок Что тестировал
- Микросервис смс-рассылок - Точнее его часть: проверка статусов -
Что тестировал
Что тестировал - Микросервис смс-рассылок - Точнее его часть: проверка
статусов - Боевая база: ~2 000 000 записей
Что тестировал - Микросервис смс-рассылок - Точнее его часть: проверка
статусов - Боевая база: ~2 000 000 записей - 4 Julia реализаций
Что тестировал - Микросервис смс-рассылок - Точнее его часть: проверка
статусов - Боевая база: ~2 000 000 записей - 4 Julia реализаций - HTTP.jl, Mux.jl, Bukdu.jl, Genie.jl
- Микросервис смс-рассылок - Точнее его часть: проверка статусов -
Боевая база: ~2 000 000 записей - 4 Julia реализаций - (HTTP.jl, Mux.jl, Bukdu.jl, Genie.jl) + LibPQ.jl - 3 Python реализации Что тестировал
- Микросервис смс-рассылок - Точнее его часть: проверка статусов -
Боевая база: ~2 000 000 записей - 4 Julia реализаций - (HTTP.jl, Mux.jl, Bukdu.jl, Genie.jl) + LibPQ.jl - 3 Python реализации - (flask, aiohttp, sanic) + psycopg2 Что тестировал
- wrk Чем тестировал
- wrk - Немного Lua Чем тестировал
- wrk - Немного Lua - Docker Чем тестировал
- wrk - Немного Lua - Docker 2 треда, 50
коннектов Чем тестировал
Что же вышло?
- ~1110 RPS - ~48 ms HTTP.jl
- ~1090 RPS - ~55 ms Mux.jl
- ~920 RPS - ~60 ms Bukdu.jl
- ~720 RPS - ~80 ms Genie.jl
Сравнение с Python
- ~980 RPS - ~50 ms Flask
sanic - ~3400 RPS - ~20 ms
aiohttp - ~3600 RPS - ~25 ms
Резюме
Резюме - Синхронная Julia не медленнее синхронного Python
Резюме - Синхронная Julia не медленнее быстрее синхронного Python
Резюме - Синхронная Julia не медленнее быстрее синхронного Python -
Асинхронный Python сильно быстрее
Резюме - Синхронная Julia не медленнее быстрее синхронного Python -
Асинхронный Python сильно быстрее - Джулии нечем ответить
Резюме - Синхронная Julia не медленнее быстрее синхронного Python -
Асинхронный Python сильно быстрее - Джулии нечем ответить - Пока
Цель
Цель - Реализовать минимальный асинхронный фреймворк на Julia
вопросы?