Григорий Петров - Почему Python медленный?

Подписывайтесь на наш канал здесь и в телеграмм t.me/meetups_evrone, чтобы быть в курсе будущих митапов и не пропускать полезные доклады!
Григорий Петров, DevRel - Evrone
Всего двадцать лет назад мир был простой и понятный. Python, Ruby и PHP были "скриптовыми", "интерпретируемыми" языками. А C++ и Java "компилируемыми, поэтому в сотни раз быстрее". А сейчас, в 2021 году, "задача четырех тел" решается на C++ всего лишь в два раза быстрее, чем на JavaScript. Но все так же в сотни раз быстрее, чем на Python или Ruby. Звучит несправедливо, и есть много хороших докладов, отвечающих на вопрос "что делать" и как обмазать все PyPy, Numba и Cython. Я же расскажу о том, "кто виноват": про компиляторы, байткод, ceval.c, виртуальные машины, JIT, нативные расширения и всё то, из-за чего мы вынуждены слышать обидное "Python медленный".
00:00 - Введение
01:07 - Что сейчас будет?
02:19 - Как работает CPU?
04:05 - Скорость = инструкции/время
06:15 - Скорость = память
08:37 - Кому можно поручить заботу о памяти?
14:10 - Почему Python тормозит, а Rust не тормозит?
19:38 - Как работает виртуальная машина Python
20:37 - Почему JS JIT быстрый, а Python JIT нет
24:34 - Путь Python
25:46 - Завершающая речь

Пікірлер: 66

  • @7IdE
    @7IdE3 ай бұрын

    Блин, обожаю этого чувака: настолько интересно рассказывать - это прям мощно. А вот за уточнение, что Питон это НЕ интерпретируемый язык, хочется выразить отдельный респект. А то слишком много людей развелось, которые считают, что это интерпретируемый язык.

  • @ivormacky5078

    @ivormacky5078

    Ай бұрын

    Компилятор питона в студию!

  • @user-dj4np3gg9y
    @user-dj4np3gg9y Жыл бұрын

    Григорий написан на пайтоне , из за этого он медленный

  • @MrTrevolta
    @MrTrevolta2 жыл бұрын

    На скорости х1,25 вообще огонь смотреть. Рекомендую.

  • @id0ntmindzz865

    @id0ntmindzz865

    2 ай бұрын

    1.33 выделил для себя как идеальную скорость для любых роликов, вдруг поможет

  • @pythonbeginnerr

    @pythonbeginnerr

    2 ай бұрын

    Это вы еще х2 не пробовали)

  • @oghry
    @oghry2 жыл бұрын

    Очень интересный доклад. Спасибо

  • @gobpblueex
    @gobpblueex Жыл бұрын

    Отличный доклад, спасибо, очень интересно и, что нетипично, понятно!

  • @true_ivansanin
    @true_ivansanin2 жыл бұрын

    Спасибо вам большое, Григорий! Надеюсь, однажды мы с вами поработаем в команде)

  • @user-sq4yd3fg4k
    @user-sq4yd3fg4k2 жыл бұрын

    Обожаю ваши подкасты!

  • @DonatIvanov
    @DonatIvanov Жыл бұрын

    Большое спасибо за Ваш доклад. Очень емко, по делу и без воды! Посмотрел с огромным интересом. Единственное, не понимаю, почему выбрали такой ракурс для съемки - непривычно. Крупный план лица (его было мало) приятнее наблюдать, чем ноги.

  • @user-dn7qr7vs1h
    @user-dn7qr7vs1h2 жыл бұрын

    Григорий как всегда на высоте!

  • @nikvacuol5711
    @nikvacuol5711 Жыл бұрын

    можете посоветовать ресурсы, где можно прочитать про совместимость ЯП?

  • @domeno8525
    @domeno85252 жыл бұрын

    Топовый доклад.

  • @ostvsvl7712
    @ostvsvl77122 жыл бұрын

    в топ ютуба!)

  • @tankowot
    @tankowot2 жыл бұрын

    На первом этапе не важно сколько выполняется бизнес задача 0.1 сек или 2 сек, главно что бы она уже работала и приносила прибыть.

  • @user-dn6vv9qd4w
    @user-dn6vv9qd4w2 жыл бұрын

    В Евроне реально крутые пацаны!!!

  • @mexico76
    @mexico768 ай бұрын

    Отличное видео для того что бы опять словить эффект самозванца). Радует то что мне хоть маленечко что-то понятно, но это не точно. Слушать спикера очень приятно. Спасибо!)

  • @EvroneDevelopment

    @EvroneDevelopment

    8 ай бұрын

    Вам спасибо!

  • @MrFrimko
    @MrFrimko Жыл бұрын

    т.е. в дотнете и джаве нет виртуальной машине? интересная новость!

  • @MrFrimko

    @MrFrimko

    Жыл бұрын

    как удобный синтаксис влияет на скорость языка? в сишарпе каждые пол года с десяток новых синтаксических фичей завозят. в плюс количество синтасисовых фич вообще не поддается исчеслению

  • @MrFrimko

    @MrFrimko

    Жыл бұрын

    столько джунов смотрит григория, а он такую дичь заливает(

  • @user-ne4bd3ry1n
    @user-ne4bd3ry1n8 ай бұрын

    первый раз слышу что ядра одного процессора работают последовательно. Где бы почитать про это? очень интересно.

  • @alexf3289

    @alexf3289

    8 ай бұрын

    Нигде, это бред.

  • @user-hg4to3df3s

    @user-hg4to3df3s

    5 ай бұрын

    Интересно зачем делать тогда многоядерные процессоры если все стоят, а один работает. Не знал, что ядрам надо отдыхать, причем если исходить из слов Григория, то чем больше ядер тем они менее эффективны, в 64 ядерном получается ядро работает лишь 1/64 от всего времени. Редкая дичь

  • @user-ne4bd3ry1n

    @user-ne4bd3ry1n

    5 ай бұрын

    @@user-hg4to3df3s скорее автор имел ввиду, что ядра многоядерного процессора начинают работать не синхронно по к.л. причине.

  • @user-hg4to3df3s

    @user-hg4to3df3s

    5 ай бұрын

    А тактовые импульсы после умножителя он значит еще раз дробит для каждого ядра? Это еще большая чушь. Давайте прикинем, после умножителя скажем имеем 3 ГГц, далее 32 ядра, которые по вашему запускаются не сразу (но они должны же быть синхронизированы с теми же регистрами и тд?) значит после прихода первого импульса на 3 ГГц он дробится для всех ядер в 32 последовательных импульса, те ядро получает импульс с частотой примерно 90ГГц. Да вам нобелевку надо дать

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil2 жыл бұрын

    Посоветуйте литературу по железу, ос. Такую чтобы базовая была, качественная.

  • @addressmodel2121

    @addressmodel2121

    5 ай бұрын

    Программисту по железу надо знать примерно следующее: Все регистры всех устройств на материнской плате отображаются в определённые диапазоны адресов адресного пространства любого процесса. Любой процесс может находиться в двух состояниях: 1) в исполнении пользовательского кода, то есть кода приложения; 2) в состоянии "нырка" в режим ядра и исполнении кода ядра. Во втором пункте исполняется код операционной системы и драйверов устройств, которые являются частью операционной системы после их запуска. Регистры всех устройств на материнской плате доступны только когда процессор находится в состоянии 2 (то есть в режиме ядра). Адреса регистров конкретных устройств на материнской плате можно посмотреть через служебное приложение "диспетчер устройств". Нырок процессора в состояние ядра обычно производится по аппаратному прерыванию от системного таймера, в обработчике которого расположен код перевода процессора из режима исполнения кода приложения в режим исполнения кода ядра. Обычно интервал срабатывания такого таймера составляет примерно 0.01 секунды (10 миллисекунд). Но, сразу скажу, что 99% программистов эту всю историю с таймерами, прерываниями и регистрами устройств знать необязательно, так как никогда и нигде они ни с чем подобным не столкнутся в реальной практике прикладного программирования.

  • @Das.Kleine.Krokodil

    @Das.Kleine.Krokodil

    5 ай бұрын

    @@addressmodel2121 я литературу просил

  • @addressmodel2121

    @addressmodel2121

    5 ай бұрын

    @@Das.Kleine.Krokodil , литературу? - Нормальной литературы по этой теме нету. Кое что есть из области разработки драйверов. Найдите в интернете что то типа Windows Driver Model (WDM), вроде там болталась пара тоненьких книжек. Ещё вроде бы болталась книжка "Драйвера сетевых устройств"., автора точно не помню, то ли Олифер, то ли ещё кто то. В общем, тема драйверов не популярная и конкретно хорошей литературы нету. Если вам интересна эта тема, то собирайте инфу по крупицам. Ройтесь по всему интернету.

  • @LebbLebb
    @LebbLebb Жыл бұрын

    Что за дизайнер работал? Я в восторге

  • @user-fi9rw4vx2b
    @user-fi9rw4vx2b Жыл бұрын

    А где и когда Java потеряла свою виртуальную машину?

  • @ruslandad365
    @ruslandad365 Жыл бұрын

    Давайте На Ассемблере Писать Он самый быстрый в мире🤣🤣🤣

  • @mvo5450
    @mvo54507 ай бұрын

    Если бы Григорий записал 100 докладов - я бы послушал их все.

  • @EdwVee
    @EdwVee2 жыл бұрын

    В смысле ядра работают последовательно? Тогда несколько ядер должны работать как одно.

  • @grigoryvp

    @grigoryvp

    2 жыл бұрын

    Нет конечно. У вас 16 ядер. Сначала работает первое. Потом второе.... Потом 16-е. Затем снова первое. И так 3 миллиарда раз в секунду. Для вас, как пользователя и программиста 16 ядер работают одновременно на частоте 3 гигагерца) Но ни одно из них на самом деле не работает действительно ОДНОВРЕМЕННО с другим. Относительно друг друга они работают последовательно.

  • @user-lh6ou6de6l

    @user-lh6ou6de6l

    2 жыл бұрын

    @@grigoryvp всё ещё непонятно. А если ядро одно? Почему оно не может работать 16*3млрд раз в секунду? Т.е. импульс сначала первый раз идёт на ядро, потом второй раз, потом третий - шестнадцатый и так далее 16 млрд раз в секунду?

  • @grigoryvp

    @grigoryvp

    2 жыл бұрын

    @@user-lh6ou6de6l Нагрев :(

  • @user-lh6ou6de6l

    @user-lh6ou6de6l

    2 жыл бұрын

    @@grigoryvp эх так и думал, но надеялся на что-то более интересное. Спасибо! Забавное, конечно пространственное распределение нагрева

  • @Das.Kleine.Krokodil

    @Das.Kleine.Krokodil

    2 жыл бұрын

    @@grigoryvp т.е. много ядер только для избегания нагрева? это по типу как Картечница Гатлинга?

  • @qrthack3233
    @qrthack32332 жыл бұрын

    Гриша, Питон или Руби для бэка?)

  • @ufocoder

    @ufocoder

    2 жыл бұрын

    Гриша

  • @qrthack3233

    @qrthack3233

    2 жыл бұрын

    @@ufocoder чудик

  • @alxvseti

    @alxvseti

    Жыл бұрын

    @@paxpax1707 Гриша - это что?

  • @sv3163

    @sv3163

    Жыл бұрын

    ⁠@@alxvsetiГриша - это «КТО». ТС дал на выбор 3 сущности, люди голосуют за Гришу, для бэкенда 😁👍

  • @glebdanichev9956
    @glebdanichev99566 ай бұрын

    бесит уменьшительно ласкательные

  • @user-jx8jl7nc3j
    @user-jx8jl7nc3j2 жыл бұрын

    Это такая особенность - выглядеть на всех докладах в одном и том же (одежде)?)) С десяток докладов - стиль одинаковый.

  • @sergeime5407

    @sergeime5407

    8 ай бұрын

    Это как советский инженер, в 25 и 40 лет в паспорте фотка в том же самом костюме.

  • @user-md2fk3jj1e
    @user-md2fk3jj1e3 ай бұрын

    авто не компетентен и как ни странно плохо понимает о чем говорит. особенно про go, сам осознает, что это контрпример его тезисов, но чтобы не сыпаться придумывает оправдания про хип и стек, типа в руби или питоне его нет. удивительно что он сделал столько однотипных докладов на одну и ту же тему и ему никто не объяснил его ошибки, да и просто не сказал что он не прав, ведь под его утверждениями нет даже какой-то внятной основы.

  • @user-kw7gi6ok7h

    @user-kw7gi6ok7h

    26 күн бұрын

    такие выступления, нацелены на "джунов", "мидлов" (сомнительно) - как кстати и сказал докладчик, от этого все так поверхностно и неточно ощущается

  • @user-md2fk3jj1e

    @user-md2fk3jj1e

    25 күн бұрын

    @@user-kw7gi6ok7h тут не в уровне слушателя дело, а в уровне докладчика. он не понимает темы, видимо весь его опыт это питон и руби, по этому у него нет ни малейшего понятия что там в vm, отсюда и такой результат вцелом.

  • @user-kz7fh9js3z
    @user-kz7fh9js3z Жыл бұрын

    зачем сегодня python вообще нужен, если есть Go? Только тянуть старые проекты ...

  • @redneck_prm5429

    @redneck_prm5429

    11 ай бұрын

    Гошка всё-таки нишевая штука, в первую очередь заточенная под настоящий хайлоад. А для сложной бизнес-логики при отсутствии большой нагрузки питон сильно лучше подходит.

  • @linuxoidovich

    @linuxoidovich

    8 ай бұрын

    А зачем вообще гошка, когда есть C++ ?

  • @user-kz7fh9js3z

    @user-kz7fh9js3z

    8 ай бұрын

    @@linuxoidovichc++ сложен в разработке и поддержки существующего ПО. Он требует кратно большие усилия чем Go. Rust видимо подходит всем)

  • @user-kz7fh9js3z

    @user-kz7fh9js3z

    8 ай бұрын

    @@redneck_prm5429 питон уже устарел и довольно многословен. Нет у него перспектив, как мне кажется

  • @mihax56
    @mihax568 ай бұрын

    както больно резко был переход от кешей к "управлению" памяти в языках - как это вообще связано? и как компилятор то влияет на эффективность работы с кешем? насколько будет эффективная работа с памятью и кешами определяется исключительно тем, какие структуры данных (читай сколько указателей надо разыменовывать чтоб к ним добраться) и если программист об этом не думает, а он об этом не думает т.к. сложность бизнес логики заставляет забить на это болт, компилятор ничем не поможет. а видимая "эффективность" программ на плюсах заключается в том, что программист имеет возможно меньше дрочить аллокаторы памяти, что является самым тормозным звеном в любой современной программе.

Келесі