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

แชร์
ฝัง
  • เผยแพร่เมื่อ 7 มิ.ย. 2024
  • Подписывайтесь на наш канал здесь и в телеграмм 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
    @7IdE 3 หลายเดือนก่อน +3

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

    • @ivormacky5078
      @ivormacky5078 หลายเดือนก่อน

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

  • @user-dj4np3gg9y
    @user-dj4np3gg9y ปีที่แล้ว +14

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

  • @MrTrevolta
    @MrTrevolta 2 ปีที่แล้ว +12

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

    • @id0ntmindzz865
      @id0ntmindzz865 3 หลายเดือนก่อน

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

    • @pythonbeginnerr
      @pythonbeginnerr 2 หลายเดือนก่อน

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

  • @user-sq4yd3fg4k
    @user-sq4yd3fg4k 2 ปีที่แล้ว +2

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

  • @oghry
    @oghry 2 ปีที่แล้ว +12

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

  • @true_ivansanin
    @true_ivansanin 2 ปีที่แล้ว +5

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

  • @gobpblueex
    @gobpblueex ปีที่แล้ว +4

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

  • @DonatIvanov
    @DonatIvanov ปีที่แล้ว +6

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

  • @user-dn7qr7vs1h
    @user-dn7qr7vs1h 2 ปีที่แล้ว +3

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

  • @domeno8525
    @domeno8525 2 ปีที่แล้ว +4

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

  • @ostvsvl7712
    @ostvsvl7712 2 ปีที่แล้ว +5

    в топ ютуба!)

  • @nikvacuol5711
    @nikvacuol5711 ปีที่แล้ว +1

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

  • @tankowot
    @tankowot 2 ปีที่แล้ว +8

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

  • @user-dn6vv9qd4w
    @user-dn6vv9qd4w 2 ปีที่แล้ว +1

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

  • @mexico76
    @mexico76 8 หลายเดือนก่อน +1

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

  • @user-ne4bd3ry1n
    @user-ne4bd3ry1n 8 หลายเดือนก่อน +2

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

    • @alexf3289
      @alexf3289 8 หลายเดือนก่อน +2

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

    • @user-hg4to3df3s
      @user-hg4to3df3s 6 หลายเดือนก่อน +1

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

    • @user-ne4bd3ry1n
      @user-ne4bd3ry1n 6 หลายเดือนก่อน

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

    • @user-hg4to3df3s
      @user-hg4to3df3s 6 หลายเดือนก่อน

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

  • @MrFrimko
    @MrFrimko ปีที่แล้ว +8

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

    • @MrFrimko
      @MrFrimko ปีที่แล้ว +4

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

    • @MrFrimko
      @MrFrimko ปีที่แล้ว +7

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

  • @user-fi9rw4vx2b
    @user-fi9rw4vx2b ปีที่แล้ว +4

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

  • @LebbLebb
    @LebbLebb ปีที่แล้ว +2

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

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil 2 ปีที่แล้ว +3

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

    • @addressmodel2121
      @addressmodel2121 6 หลายเดือนก่อน

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

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 6 หลายเดือนก่อน

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

    • @addressmodel2121
      @addressmodel2121 6 หลายเดือนก่อน

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

  • @ruslandad365
    @ruslandad365 ปีที่แล้ว +3

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

  • @mvo5450
    @mvo5450 7 หลายเดือนก่อน

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

  • @EdwVee
    @EdwVee 2 ปีที่แล้ว +5

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

    • @grigoryvp
      @grigoryvp 2 ปีที่แล้ว +9

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

    • @user-lh6ou6de6l
      @user-lh6ou6de6l 2 ปีที่แล้ว +2

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

    • @grigoryvp
      @grigoryvp 2 ปีที่แล้ว +1

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

    • @user-lh6ou6de6l
      @user-lh6ou6de6l 2 ปีที่แล้ว +1

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

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil 2 ปีที่แล้ว +1

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

  • @qrthack3233
    @qrthack3233 2 ปีที่แล้ว +2

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

    • @ufocoder
      @ufocoder 2 ปีที่แล้ว +13

      Гриша

    • @qrthack3233
      @qrthack3233 2 ปีที่แล้ว +3

      @@ufocoder чудик

    • @alxvseti
      @alxvseti ปีที่แล้ว

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

    • @sv3163
      @sv3163 ปีที่แล้ว

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

  • @glebdanichev9956
    @glebdanichev9956 6 หลายเดือนก่อน +2

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

  • @user-jx8jl7nc3j
    @user-jx8jl7nc3j 2 ปีที่แล้ว +4

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

    • @sergeime5407
      @sergeime5407 8 หลายเดือนก่อน

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

  • @user-md2fk3jj1e
    @user-md2fk3jj1e 3 หลายเดือนก่อน +1

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

    • @user-kw7gi6ok7h
      @user-kw7gi6ok7h หลายเดือนก่อน

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

    • @user-md2fk3jj1e
      @user-md2fk3jj1e หลายเดือนก่อน

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

  • @user-kz7fh9js3z
    @user-kz7fh9js3z ปีที่แล้ว +1

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

    • @redneck_prm5429
      @redneck_prm5429 11 หลายเดือนก่อน +1

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

    • @linuxoidovich
      @linuxoidovich 9 หลายเดือนก่อน +2

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

    • @user-kz7fh9js3z
      @user-kz7fh9js3z 8 หลายเดือนก่อน +1

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

    • @user-kz7fh9js3z
      @user-kz7fh9js3z 8 หลายเดือนก่อน +1

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

  • @mihax56
    @mihax56 8 หลายเดือนก่อน

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