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
Рвем жинжу на китайский флаг
Search
Moscow Python Meetup
PRO
February 20, 2014
Programming
0
680
Рвем жинжу на китайский флаг
Виктор Коцеруба
Некоторые темы оптимизации кода на примере самописного шаблонизатора
Moscow Python Meetup
PRO
February 20, 2014
Tweet
Share
More Decks by Moscow Python Meetup
See All by Moscow Python Meetup
Moscow Python Meetup №106. Евгений Блинов (The Mutating Company, Founder). Суперфункции
moscowdjango
PRO
0
71
Moscow Python Meetup №106. Валерий Карпузов (SmartFX, Team Lead). Пиши, сокращай — Code Golf на Python
moscowdjango
PRO
0
110
Moscow Python Meetup №106. Николай Казак (Технический лидер роботизации бизнес-процессов, МТС Финтех). RPA по-взрослому
moscowdjango
PRO
0
49
Moscow Python Meetup №105. Кирилл Гладких (ООО Штаб, Python разработчик). Как вайбкодить по-сениорски
moscowdjango
PRO
0
130
Moscow Python Meetup №105. Пётр Андреев (МФТИ, лектор по курсу Advanced Python). Дотянуться до кремния. HighLoad Python: SIMD, GPU
moscowdjango
PRO
0
67
Moscow Python Meetup №105. Антон Важнецов (K2 Cloud, Тимлид). Подход к глубоким изменениям. Миграция SDN в боевом облаке на Python
moscowdjango
PRO
0
52
Moscow Python Meetup №104. Как научить Алису рецептам дореволюционной кухни
moscowdjango
PRO
0
51
Moscow Python Meetup №104. Оптимизация сервиса АБ тестирования или как уйти от Django ORM к Fastapi query builder
moscowdjango
PRO
0
82
Moscow Python Meetup №104. CI/CD Pytest для тестирования качества данных здравоохр. в Великобритании
moscowdjango
PRO
0
60
Other Decks in Programming
See All in Programming
React Native × React Router v7 API通信の共通化で考えるべきこと
suguruooki
0
100
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2.3k
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
200
カスタマーサクセス業務を変革したヘルススコアの実現と学び
_hummer0724
0
750
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
180
Python’s True Superpower
hynek
0
110
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
230
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
2.5k
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
280
CSC307 Lecture 10
javiergs
PRO
1
660
並行開発のためのコードレビュー
miyukiw
1
1.3k
登壇資料を作る時に意識していること #登壇資料_findy
konifar
4
1.7k
Featured
See All Featured
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.1k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Agile that works and the tools we love
rasmusluckow
331
21k
Reality Check: Gamification 10 Years Later
codingconduct
0
2k
Unsuck your backbone
ammeep
671
58k
The SEO identity crisis: Don't let AI make you average
varn
0
330
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
450
How GitHub (no longer) Works
holman
316
140k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
80
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
90
Transcript
ПРИВЕТ
ТЫ НЕ УМЕЕШЬ ПИСАТЬ НА ПИТОНЕ правда правда
Я ТОЖЕ но стараюсь
ХВАЛЮ АРМИНА • pygments • sphinx • werkzeug • flask
• jinja • ast
ХВАЛЮ ЖИНЖУ • простая в использовании • умеет больше •
быстрая • без интерпретатора
КАК ОНА РАБОТАЕТ • парсит шаблон • генерирует код •
компилирует
РЕЗУЛЬТАТ - КОД НА ПИТОНЕ
None
None
РУГАЮ ЖИНЖУ • не знает про html • выводит через
yield • лишние name resolution (environment) • context ??
None
ЗАВИДУЮ HAML • понимает html • лаконичный • ruby, javascript
А КАК ЖЕ Я? 1. HamlPy = haml → django
2. mint - честный 3. PyHAML = haml → mako
НАДО ЧТО-ТО ДЕЛАТЬ! • тормоза - бесят • конвертировать -
скучно • синтаксис минта - не нравится
ПИШУ САМ
ПИШУ САМ • привычный синтаксис • высокая скорость • минимальные
усилия
ПИШУ САМ • использую ast.parse • генерирую код • оптимизирую
None
None
ДУМАЮ
ОПТИМИЗИРУЮ ast.NodeTransformer
ОПТИМИЗИРУЮ close_tag("table") ! print("</table>")
ОПТИМИЗИРУЮ open_tag("table", {"class": "foo"}) ! print('<table class="foo">')
ОПТИМИЗИРУЮ open_tag("td", {"name": name}) ! print('<td name="', quoteattr(name), ">')
ОПТИМИЗИРУЮ print('<tr>') print('<td>') ! print('<tr><td>')
ОПТИМИЗИРУЮ for i in [0, 1, 2]: print(i) ! print(0,
1, 2)
ЧИСТЫЕ ФУНКЦИИ привет, хаскель
ОПТИМИЗИРУЮ print(escape("<foo")) ! print("<foo")
ОПТИМИЗИРУЮ for i in range(3): print(i) ! print(0, 1, 2)
ИНЛАЙНИНГ привет, си
ОПТИМИЗИРУЮ def foo(i): print(i) foo(1) ! print(1)
ОПТИМИЗИРУЮ • считаю заранее • инлайню функции • разворачиваю циклы
• склеиваю строки • list.append / list.extend
None
None
HAMLY github.com/barbuza/hamly
НАСКОЛЬКО БЫСТРО msec mako jinja2 hamly 6,5 31,9 36,6
ДУМАТЬ - ПОЛЕЗНО
КАК НАУЧИТЬСЯ? • elixir • lisp (!) • haskell (!!)
ВОТ И ВСЕ