No video

Эти функции в Python работают БЫСТРЕЕ С++ / Ускорение в 40 раз

  Рет қаралды 24,482

ZProger [ IT ]

ZProger [ IT ]

Күн бұрын

Пікірлер: 194
@zproger
@zproger 2 жыл бұрын
Стоит ли делать видео о PyPy? Возможно у Вас есть технологии, которые хотели бы увидеть на канале. Не стесняйтесь писать под данным комментарием, это поможет создать более полный контент и заодно рассмотреть те технологии, которые нужны именно Вам.
@segeus
@segeus 2 жыл бұрын
Точно не могу сказать про актуальность. Последние бенчмарки, которые я видел показали, что оптимизированный CPython в тандеме с Cython работает быстрее, чем PyPy. Посему я пока не секу фишку PyPy
@GIMP514
@GIMP514 2 жыл бұрын
Лучше сделай видео про Cython. Сам с ним не знаком, но много чего о нём слышал, как хорошего, так и плохого. На Ютубе о нём видео мало. Но хотелось бы увидеть его работу в реальных проектах, в том числе и стабильность его работы!
@AliF0Uen
@AliF0Uen 2 жыл бұрын
Я очень буду ждать так же видео о Cython. Как оно работает, что с типами данных, классы, и т.д.
@agentsmit09
@agentsmit09 2 жыл бұрын
Мне очень интересна работа c FFI в Python. Так же интересно, можно ли к Python прикрутить .NET-сборку
@valery1502
@valery1502 2 жыл бұрын
Было бы интересно посмотреть на то, как можно подружить Numba и PyCUDA Чтобы ускорить не в 40 а в чуть побольше раз)
@oxisgen
@oxisgen 2 жыл бұрын
Запись чисел с буквой е в конце - это экспоненциальная запись. Число после е означает в какую степень нужно возвести десятку, а число перед - то, на что мы эту десятку умножаем. Таким образом 2e-06 это 2 * 10^(-6) т.е. 0.000002. Фактически, данный код на c++ после компиляции выполнится моментально. В чём и есть основная идея C++ - максимально переложить накладные расходы на этап компиляции ради получения максимально скорости в рантайме. Имхо, не нужно из питона делать C++. jit-компиляция классная технология, но имеет свои ограничения. Например - сильный оверхед по памяти, дополнительные накладные расходы на процессорное время и кеш. Одним словом, для прикладных расчётов с numpy или ускорения очень тяжеловесных участков кода это имеет смысл, но если весь ваш код тяжеловесный и подразумевает быструю работу в рантайме (особенно, если в условиях ограниченных ресурсов без возможности их масштабирования) - не морочьте себе голову и напишите его на подходящем для этого языке.
@nakamasama
@nakamasama 2 жыл бұрын
Согласен. Использование njit я видел у одного блогера (его ник я не помню). Он его использовал только в тех проектах, где создавал тяжеловесную графику, когда fps проседает ниже 20. Таким образом он ускоряет вычисления и fps поднимается до 80-100. А в простых проектах он его не использует. Больше я нигде и ни у кого не видел использования njit
@pashahous
@pashahous 2 жыл бұрын
@@nakamasama я видел, использование numba, у блогера standalone
@user-gt8jg4ni3o
@user-gt8jg4ni3o 2 жыл бұрын
2e-06 признак того, что часть кода была выкинута или не вычислялась из-за того, что результат вычислений нигде не используется или не показывается.
@oxisgen
@oxisgen 2 жыл бұрын
@@user-gt8jg4ni3o Да, похоже вы правы. Что тут сказать, высокий уровень бенчмаркинга. Хотя, учитывая, что флаги оптимизации не стоят, странно, что он выкидывает вызов функции. По крайней мере в моём случае, такой оптимизации не происходит даже с флагом -OFast, а скорость выполнения 0,02. p.s. отбой, забыл поставить релизную сборку. В релизной всё же удаляет вызов функции, но опять же, только с включенными оптимизациями.
@agentsmit09
@agentsmit09 2 жыл бұрын
@@nakamasama Интересный подход. Я бы тяжеловесную графику не догадался бы грузить на Python. Я бы написал все это дело на C/C++ ну или крайний случай на С#, а Python использовал чисто для скриптов анимации и прочего
@user-gt3dd7gk9b
@user-gt3dd7gk9b 2 жыл бұрын
я конечно не спец в этих вопросах но даже у меня возникаю вопросы. 1) в с++ в цикле не инициализирован счетчик. 2) результат выполнения функции не используется и поэтому компилятор может "выбросить" этот код.
@18chat48
@18chat48 2 жыл бұрын
ридми с гитхаба намбы: "Additionally, Numba has support for automatic parallelization of loops, generation of GPU-accelerated code, and creation of ufuncs and C callbacks." Иными словами автор сравнивает питон с мультипотоком и плюсы, которые работают в одном. 1. Корректнее сравнивать плюсы с мультипотоком, для этого можно заюзать openMP. 2. 2e-06 - это не примерно 3 секунды. это 0.000002 сек. фактически плюсы без распараллеливания справились моментально. Так же я бегло прошёлся по исходникам Numba и вставок на ассемблере не нашёл. Но тут могу легко ошибиться. Мне нравится этот канал, но прошу автора подходить аккуратнее к изложению непроверенной информации.
@Арсен0105
@Арсен0105 2 жыл бұрын
2е-06 это же экспоненциальная запись, разве нет? Тогда плюсы быстрее отработали. Если так, то встаёт вопрос о компетенции автора
@Арсен0105
@Арсен0105 2 жыл бұрын
Да и на просторах интернета есть тест плюсов и ассемблера и насколько я помню они там наравне
@alexjet2177
@alexjet2177 2 жыл бұрын
2e-6(калькуляторная запись) это 2×(10^-6) поэтому numba не вывезла, против даже чистых "плюсов", а если взять такую вещь, как SIMD, то будет еще больше разница.
@scalesair4658
@scalesair4658 Жыл бұрын
Очень нужно. Ждём видео. Спасибо за Ваш труд. С наступающим Вас.
@zproger
@zproger Жыл бұрын
Спасибо, и Вас с наступающим!
@dsShadega
@dsShadega 2 жыл бұрын
Когда компилишь плюсовый код, укажи флаг оптимизации!!!!!! -O3. Это раз. А два, ты не показал код isPrime() - он возможно неоптимально написан. А три. Если не разбираешься C++, то не лезь в сравнения с C++!!! А так же чушь про ассемблерные вставки... Ассемблерные вставки быстрее только, если их писать правильно с глубоким знанием архитектуры. А оптимизаторы (который ты особо не запускаешь при компиляции плюсового кода) включают в себя многолетний опыт автоматической оптимизации этого самого выходного ассемблерного кода. Так что опять же. Такие простые вещи, как написаны у тебя в коде будут оптимизированы (ЕСЛИ ОПТИМИЗАТОР ПРИМЕНЯТЬ!) очень хорошо. И ДА 2e-06 это 0.000002 секунды! Как ты можешь вообще работать с числами, если ты не понимаешь формы их записи??! ru.wikipedia.org/wiki/%D0%A7%D0%B8%D1%81%D0%BB%D0%BE_%D1%81_%D0%BF%D0%BB%D0%B0%D0%B2%D0%B0%D1%8E%D1%89%D0%B5%D0%B9_%D0%B7%D0%B0%D0%BF%D1%8F%D1%82%D0%BE%D0%B9#%D0%9D%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B8_%D0%BD%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F_%D1%84%D0%BE%D1%80%D0%BC%D1%8B
@Myp4aJTka1
@Myp4aJTka1 2 жыл бұрын
Скорее всего компилятор просто скипнул код, так что компилятор плюсов выиграл. Numba просто с оптимизировал выполнение кода, а С++ просто понял, что это бессмысленно
@myriaxont
@myriaxont 2 жыл бұрын
@@Myp4aJTka1 Так и есть, один из способов отключить данную оптимизацию - сохранять результат функции `isPrime` в переменную типа `bool volatile`.
@0xsadcat92
@0xsadcat92 2 жыл бұрын
Проверил, -О2 дал чуть больший прирост) В целом согласен
@bubalom
@bubalom Жыл бұрын
Согласен с тобой полностью, питон это псевдо язык пока он переведет все значения,с++ давно уже все подсчитает
@artyommakovskiy8974
@artyommakovskiy8974 2 ай бұрын
В защиту автора - он всё-таки указал на те места где чувствовал неуверенность. Предупредил что будут поверхностные предположения. Мы видим статистику популярности пайтона в профессиональной сфере, но тело айсберга невозможно официально осветить. Уверен большинство применений питона - это хобби-проекты и самообслуживание мелкого бизнеса. Такие проекты не предполагают инвестиции в фундаментальное образование. Пайтон не требует преобразования личности и сильного изменения кривой развития. Питонист может сделать программный инструмент и продолжить быть собой. Профессиональный сишник в первую очередь должен превратить себя в инструмент. Уверен, комментарий был полезен автору, но, уверен также, не был приятен) Как понимаю исторически добродушная взаимоподдержка - основа пайтон комьюнити. И, давайте посмеёмся, такие цифры, требующие экспоненциальной записи, долго не были доступны) P.S. Высказываюсь как любитель, которому хардкор не доступен, и который не перешёл бы порог вхождения без таких платформ как пайтон, ардуино или юнити. Все мы уважаем профессионалов. Текст сокращаю, поэтому моё мнение может выглядеть однобоко.
@MaxusR
@MaxusR 2 жыл бұрын
Объяснения уровня "я не знаю, что значат эти циферки, но явно стало быстрее"
@zproger
@zproger 2 жыл бұрын
На экране всё вывел)
@aleksandrdemidov6058
@aleksandrdemidov6058 2 жыл бұрын
спасибо за видео, взял на заметку ... жду видео написание библиотек на с++ для питона )
@zproger
@zproger 2 жыл бұрын
Благодарю
@Vadim-pp6hg
@Vadim-pp6hg 2 жыл бұрын
Функции выполняются быстрее, но далеко не все. Я пока не нашёл зависимости, но функция вычисления числа Фибоначчи (без рекурсии) выполняется даже дольше, а результат совершенно другой. А что самое интересное, без декоратора @njit функция выполняется правильно, а с ним результат неверный. Предполагаю, что проблема с выделением памяти, так как проблема возникает именно с большими числами. Теперь-то мы знаем, почему в видео нет вывода результата функции)
@AliF0Uen
@AliF0Uen 2 жыл бұрын
Ну вот только узнал про numba и сразу же видео как раз в тему.
@zproger
@zproger 2 жыл бұрын
Повезло =)
@waygame2090
@waygame2090 2 жыл бұрын
Странно сравнивать по скорости компилируемый язык с питоном, где для ускорения питона используется разная абстракция, что по дефолту увеличивает время выполения программы по сравнение с С/С++
@8Johnny8Catsvill8
@8Johnny8Catsvill8 2 жыл бұрын
Математику поэтому надо и учить. Плюсовый код выполнился быстрее... 2e-06 значит 2*10^-6. Два умножить на 10 в степени минус шесть. Это 0,000002. И это ты ещё без оптимизации запустил
@zproger
@zproger 2 жыл бұрын
Не думаю что ради такого случая стоит её учить. Учитывая что за 4 года это первый раз когда пригодилась вот такая элементарная формула, которую удалось достать за 5 минут.
@myriaxont
@myriaxont 2 жыл бұрын
Конкретно в данном случае, компилятор просто убрал вызов функции - ну а че, ведь результат никуда не сохранялся. Дабы исправить данную проблему, можно к примеру сохранять результат выполнения функции в переменную типа bool volatile, либо же просто типа bool, но с реализацией (к примеру, в конце программы выводить в консоль значение переменной).
@mkalalaka
@mkalalaka 2 жыл бұрын
@@zproger надо учить как минимум способы представления чисел. такой формат называется научной нотацией и существует примерно везде, начиная от того Фортрана наверно. забыл я его, тридцать лет назад видел в последний раз. коллега там по моему на нолик ошибся. в общем виде 2*10^-6 == 2 / 1 000 000 == 0.000002
@zproger
@zproger 2 жыл бұрын
Это реально хороший совет. Представление чисел я не против изучить =)
@minatych1435
@minatych1435 2 жыл бұрын
@@myriaxont компилятор не выкинет вызов функции, если не включены оптимизации. А они не были включены. Для этого нужно толкнуть флаг -O2 хотя бы. Конечно, с оптимизациями будет ещё быстрее. Даже если результат функции будет использоваться. Ещё быстрее будет, если сделать функцию static, или с lto.
@seoonlyRU
@seoonlyRU 2 жыл бұрын
Благодарочка за видео! Лайк от СЕООНЛИ
@zproger
@zproger 2 жыл бұрын
=)
@soros06
@soros06 2 жыл бұрын
Огонь!!
@evype2449
@evype2449 2 жыл бұрын
Было очень интересно. Однозначно за продолжение с другими библиотеками.
@zproger
@zproger 2 жыл бұрын
=)
@Bunkerniy_Gadenish
@Bunkerniy_Gadenish 2 жыл бұрын
Шо за тумба юмба? Я тока начал на пайтоне пердеть месяц +-, мне тумба юмбу смотреть делать или рано еще? А и еще кремпай мне нужно изучать тоже вместе с тумбой?
@agentsmit09
@agentsmit09 2 жыл бұрын
Python обгонит С++ только в 1 случае. Если компилятор С++ был написан студентом 3-го курса. Ну хоть автор заметил ошибку в своей интерпретации и поправил комментарием в видео.
@zproger
@zproger 2 жыл бұрын
Да, питон никак не может быть быстрее в чистом виде. Ну и если бы я написал "numba vs c++" это тоже было бы не совсем корректно сравнивать технологию и язык.
@agentsmit09
@agentsmit09 2 жыл бұрын
@@zproger Да дело даже не в numba. Если за подобное дело возмется крупная компания, например Microsoft, то вполне можно ожидать оптимизации байт-кода по скорости до уровня С#. Наверное с JIT-компиляторами Microsoft впереди всех.
@alexjet2177
@alexjet2177 2 жыл бұрын
@@zproger Если я возьму не чистый C++, а воспользуюсь SIMD то быстрее будет только Assembler
@0xsadcat92
@0xsadcat92 2 жыл бұрын
а давно ли 2e-6 это "примерно 3 секунды"? как бы это примерно 2 микросекунды...
@0xsadcat92
@0xsadcat92 2 жыл бұрын
хочу дополнить: 1) 2е-6 это 2 * 10 ^ -6 = 2 / 10 ^ 6 = 2 / 1000000 = 0.000002 2) "ассемблерные вставки" - 90% дичь, современные компиляторы оптимизируют лучше 3) С++ тоже написан на си 4) С++ не медленнее си 5) С++ тоже может кешировать 6) Стоит показывать весь код, чтобы проверить
@0xsadcat92
@0xsadcat92 2 жыл бұрын
Обновлено еще раз: Питон - 4.6 сек С++ - 1.8 сек Код полностью из видео Сами библиотеки отличные, но тебе бы самому разобраться в предметной области, а потом курсами торговать, без обид
@zproger
@zproger 2 жыл бұрын
Я там добавил это в видео, но где-то в доках я нашел это сравнение
@zproger
@zproger 2 жыл бұрын
А я и не продаю те курсы, которые не понимаю до конца, я рассказываю лишь тот материал в курсах, который понимаю хорошо
@shinigami_yokoso
@shinigami_yokoso 2 жыл бұрын
@@0xsadcat92 то что плюсы медленнее С это факт, даже до 1.5 раза доходит разница в скорости.
@alexandervorvulev5790
@alexandervorvulev5790 2 жыл бұрын
флаг оптимизации компилятору плюсов поставь, не позорься. Уже второй раз вижу такое сравнение, правда первый чел нумбу с параллельными вычислениям против плюсов без этого сравнивал
@myriaxont
@myriaxont 2 жыл бұрын
Тут на мгновение видно код на плюсах, и он тоже без распараллеливания.
@gogosha
@gogosha 2 жыл бұрын
Однозначно да, сделайте видео про эти технологии
@zproger
@zproger 2 жыл бұрын
Хорошо =)
@AliF0Uen
@AliF0Uen 2 жыл бұрын
ZProger, у меня есть один вопрос. Может ли cython работать с python библиотеками в своём коде? К примеру tkinter
@rokot
@rokot 2 жыл бұрын
У tkinter виджеты сделаны на С, а код управления на пайтоне
@AliF0Uen
@AliF0Uen 2 жыл бұрын
@@rokot это я знаю и понимаю, но способен ли cython работать с другими библиотеками написанных на python? Пойду происледую.
@AliF0Uen
@AliF0Uen 2 жыл бұрын
Короче, cython это обалденная штука, о которой полюбе должен выйти хороший видос чтобы понять как это работает. Cython комплирует так же и обычный код питона в си, таким образом где-то можно писать на самом cython указывая тип переменных а где-то на обычном питоне. Например если создавать функцию по вычислению чисел Фибоначчи и забыть упомянуть что i это переменная типа int из си, то тогда код будет даже чутка медленнее чем на обычном python, потому что код будет конвертировать тип int из python в int из си, и даже выдавать ошибку если число занимает больше чем 16 байта, если упомянуть что i это int из си, то тогда код станет быстрее но если число занимает больше чем 16 байта то уже ошибки не будет но числа будут отрицательные, потому что биты в байтах сдвигаются и типо этих всех штук. Но я узнал в интернете что есть тип long long, потому что обычный long тоже на 16 байт, и в этом long long уже аж 32 байта, а это больше 4 млрд значений. Тут куча нюансов, например я хз насчёт классов и строк и так далее, буду ждать видео от ZProger, в надежде что что-то пойму.
@wasd1338
@wasd1338 2 жыл бұрын
чувак, это охренительно. респект
@zproger
@zproger 2 жыл бұрын
Благодарю =)
@VffrfubdwHui
@VffrfubdwHui Жыл бұрын
Спасибо за информацию, очень полезно, но с выводами конечно косяк вышел) Надеюсь ты уже исправился и подтянул математику)))
@zproger
@zproger Жыл бұрын
да, выучил таблицу умножения) немножко тупанул конечно, хотя и перед тем как такое сказать, заходил в чаты и уточнял это, видимо математику не знает никто :D
@amletixq
@amletixq 2 жыл бұрын
Крутое видео. А у вас дистрибутив Ubuntu?
@user-il7tk4yn3v
@user-il7tk4yn3v Жыл бұрын
Спасибо за Ваш труд, было очень интересно
@tisseract
@tisseract Жыл бұрын
2е-06 - это 2 миллионные доли секунды! А теперь посчитай, насколько С++ быстрее. И да, советую: почитай разок про экпоненцияальуню запись чисел - сразу всё станет понятно
@Vova21rus
@Vova21rus 2 жыл бұрын
Спасибо! Не знал о numba. Мне кажется будет удобно использовать, когда есть какой-то алгоритм, который часто вызывается в каком-нибудь большом python проекте.
@zproger
@zproger 2 жыл бұрын
Это да =)
@mkalalaka
@mkalalaka 2 жыл бұрын
да, если где то есть арифметика любой степени сложности. интересно, влияет ли нумба допустим на парсинг. в первом приближении это все операции со списками, кортежами и т.п. потом заценить бы влияние на регулярные выражения. может я прослушал, но не услышал ничего такого. в конце концов это работа с памятью и разнообразные поиски и переборы. на том же ассемблере это делается довольно живо, правда за счет отсутствия разнообразных проверок, которые накручены на более высоком уровне.
@user-kc9tz6zq1p
@user-kc9tz6zq1p 2 жыл бұрын
Как Ассемблер может быть быстрее C, а он быстрее C++, ведь они все компилируются в машинный код?
@zproger
@zproger 2 жыл бұрын
Количество инструкций ассемблера отличается, правда иногда после оптимизации машина может сделать более эффективный вариант чем сам разработчик, который руками пишет на асм.
@Silver_men_rev
@Silver_men_rev 2 жыл бұрын
Супер пупер! Красава!
@zproger
@zproger 2 жыл бұрын
Благодарю =)
@AliF0Uen
@AliF0Uen 2 жыл бұрын
То в сколько раз питон ускоряется c помощью разных штук, напрямую зависит от масштаба самой программы. Так можно для тестов использовать малые значения и получить ускорение в 2-5 раз, а можно поставить огромные числа и получить ускорение в 100 раз.
@mkalalaka
@mkalalaka 2 жыл бұрын
в сто может и не получиться. за счет уменьшения влияния сопутствующих факторов, таких как время компиляции, кэширование и т.д. разница в скорости будет стремиться к константе. судя по примерам это что то около 40.
@AliF0Uen
@AliF0Uen 2 жыл бұрын
@@mkalalaka можно запустить две функции по вычисления чисел Фибоначчи с числом 999 999и засечь время, одна на cython, вторая на python. Cython будет в 150 раз быстрее. Вроде в тестах я использовал именно 999 999 и получил такой исход. Смысла считать время выполнения всего файла я не вижу. Но один минус есть это да: файл долго транслируется в си. Хотя достаточно написать алогиртм на python а потом лишь указать тип переменных и получить неимоверный прирост за счёт типа данных.
@user-ir2hm1rt9f
@user-ir2hm1rt9f 2 жыл бұрын
Ну фиг знает. Я с питона перешел на rust и у меня глаза на лоб полезли. Скорость и мощь просто заоблачные. А до этого я тоже думал, что эти компилируемые языки не нужны для веба - ведь есть всякие примочки на питоне.
@zproger
@zproger 2 жыл бұрын
Согласен, rust крутой
@mrdixioner
@mrdixioner 3 ай бұрын
То, что автор видео ставит сердечки только под положительными комментами, а на поправки вообще не реагирует, уже можно задуматься и сравнить его с небезызвестным Гошенькой Дударем.
@JillBill545
@JillBill545 2 жыл бұрын
хм очень интересно, я совсем новичок пока что не всё понимаю, но контент просто отличнейший🙂
@alexstone2042
@alexstone2042 2 жыл бұрын
Спасибо вам за ваши видео,очень мотивируют не опускать руки и продолжать заниматься делом. Очень хочу стать хорошим программистом. Благодаря вам,я многое узнал и буду использовать
@dartmoore5398
@dartmoore5398 2 жыл бұрын
Кликбейтом попахивает
@zproger
@zproger 2 жыл бұрын
Не совсем
@altkun_
@altkun_ 2 жыл бұрын
плюсы мог бы скомпилировать с O3
@zproger
@zproger 2 жыл бұрын
Это да, но я показывал пример который нашел
@myriaxont
@myriaxont 2 жыл бұрын
Ну тогда уж сразу -Ofast ))
@MrMikhailDJ
@MrMikhailDJ 2 жыл бұрын
Автор, а можно с тобой встретиться и задать вопросы лично? Как собеседование. Уверен ты даже не знаешь, чем компилятор от интерпретатора отличается. Зато эти питонщики клепают по 50 видео в день, как они код питона ускоряют…. Плакала индустрия программирования. Куча джунов, которые долбят практику, но совсем не читают теорию
@zproger
@zproger 2 жыл бұрын
Ахаха, как скажете, я не собираюсь доказывать никому что небо голубое
@---wl9fm
@---wl9fm 2 жыл бұрын
Смысл всего этого, если мы начинаем подчинять синтаксис python стандартам с? Намного легче просто писать на с.
@mkalalaka
@mkalalaka 2 жыл бұрын
на питоне может быть намного проще писать обвязку вокруг собственно вычислений. возможно было бы намного легче писать на питоне, а для быстрого кода делать какую то вставку на С или ассемблере. раньше такая хрень была встроена в какую то Си оболочку, Борландовскую что ли. пишешь что то вроде asm {...} и лепишь туда ассемблерные инструкции. а может это в Делфи было, забыл уже.
@zproger
@zproger 2 жыл бұрын
Тот же смысл как и в Java используют нативные компоненты на с++ Можно и сразу написать на Си, но к примеру есть задачи которые в разы легче написать на питоне, а потом подключить какой-то функционал из библиотеки, к примеру тот же графический интерфейс реализовывать полностью на Си это смерти подобно.
@tim4ig
@tim4ig 2 жыл бұрын
Как питон может быть быстрее С++, если код питон переводиться в С++. С++ быстрее С++? А флаги оптимизации? Кликбейтер
@nikulin7944
@nikulin7944 2 жыл бұрын
Очень интересно))
@R56A
@R56A 2 жыл бұрын
Спасибо за видео. Умоляю не Pandás, a Pándas... Бинтов мне для крови из ушей... Животное такое есть медведь панда не пандá жеж...
@zproger
@zproger 2 жыл бұрын
Спасибо, исправлюсь. Совсем забыл в честь чего назвали либу)
@Twenti_dinamit
@Twenti_dinamit 2 жыл бұрын
Сегодня мы проверим что быстрее жигуль или бугатти. Для начала поставим на жигуль двигатель от бугатти...
@zproger
@zproger 2 жыл бұрын
xDD Именно так
@Ogurez0
@Ogurez0 2 жыл бұрын
Здравствуйте, подскажите пожалуйста, какой дистрибутив вы используете?
@zproger
@zproger 2 жыл бұрын
zorin os
@Ogurez0
@Ogurez0 2 жыл бұрын
Спасибо
@sanuzuev6640
@sanuzuev6640 2 жыл бұрын
Спасибо
@zproger
@zproger 2 жыл бұрын
=)
@robertobokarev439
@robertobokarev439 2 жыл бұрын
Так-так-так, кое-кто уже рассказывал про numbу и его jit-компиляцию)
@zproger
@zproger 2 жыл бұрын
Без понятия о ком речь, на своем канале о numba не рассказывал
@robertobokarev439
@robertobokarev439 2 жыл бұрын
А, ладно. Мне казалось, что вы уже рассказывали)
@jurissiberian7568
@jurissiberian7568 2 жыл бұрын
Иди в программирование, говорили они. Там математика не нужна, говорили они...
@zproger
@zproger 2 жыл бұрын
Первый раз за 4 года когда математика пригодилась)
@AntiBandera
@AntiBandera 2 жыл бұрын
ОНИ это голоса в твоей голове ? В примере не математика а элементарная арифметика ....
@howl3440
@howl3440 2 жыл бұрын
да, пили cython, сам его использую, мощный, быстрый инструмент, по-моему, в 70 раз быстрее python, для cython можно писать модули на c++, c и использовать их, а cython все красиво скопилирует
@artyommart
@artyommart 2 жыл бұрын
Здравствуйте ZProger [IT]. На чем в основном пишут вирусы?
@zproger
@zproger 2 жыл бұрын
на html ;)
@artyommart
@artyommart 2 жыл бұрын
@@zproger😅
@Forvard-123
@Forvard-123 2 жыл бұрын
Познавательная инфа
@zproger
@zproger 2 жыл бұрын
Благодарю
@igorseledtsov7345
@igorseledtsov7345 2 жыл бұрын
А может автору, попробовать какое никакое образование попробовать получить? Откроется много интересного...
@zproger
@zproger 2 жыл бұрын
Попробуйте сами, я уже свое получил =)
@developer5241
@developer5241 Жыл бұрын
Тем временем разработчики андроид: не надо дядя, оно тебе не надо…
@vacn2259
@vacn2259 2 жыл бұрын
Расскажи пожалуйста про регулярки
@zproger
@zproger 2 жыл бұрын
Ок, спасибо
@unaibekovbakhyt6517
@unaibekovbakhyt6517 2 жыл бұрын
Можно ли сделать видео по fastapi и простеньким примером на фронте, например список телефонных контактов, хранение в бд и возможность отображения контакта по выбору имени на форме
@dazdess
@dazdess 2 жыл бұрын
Очень круто
@zproger
@zproger 2 жыл бұрын
Спасибо!
@lexek
@lexek 2 жыл бұрын
Очень полезно, но я не справился с установкой numba, но и текущая скорость пайтона меня устраивает
@zproger
@zproger 2 жыл бұрын
=)
@toktarov1984
@toktarov1984 2 жыл бұрын
Импортирован prange, но в функции используется range. С prange будет ещё быстрее.
@MrMikhailDJ
@MrMikhailDJ 2 жыл бұрын
Уверен этот человек вообще не понимает как работает c++……… Это финиш……
@zproger
@zproger 2 жыл бұрын
Ок =)
@Taro_Tonkoora
@Taro_Tonkoora 2 жыл бұрын
Облизываю яйца тому, что мне нравится - надо было назвать ролик именно так. Нумба - вещь хорошая, но не настолько, как ты здесь описал. На С++ можно было цикл даже в ассемблере написать, если ты хотел тысячные секунды в исполнении. Впрочем, даже к ассемблеру не надо обращаться - надо хорошо знать язык программирования, чтобы писать оптимизированные приложения (кстати, это касается и питона! а то до хрена "хорошего" кода уже написано) И да: что это за функция isPrine? В плюсах. Конечно, показатели будут бешенные, ибо каждый раз при итерации цикла вызывается такая вундервафля. Такое ощущение, что наё... Ну, в общем понял.
@disadiuauiosdaiaudiossaais8862
@disadiuauiosdaiaudiossaais8862 2 жыл бұрын
что у тебя за линукс? fedora?
@zproger
@zproger 2 жыл бұрын
zorin os
@IgorAlov
@IgorAlov 2 жыл бұрын
Си выполнил код за 2 микросекунды....
@zproger
@zproger 2 жыл бұрын
Ага)
@nikola-nikrasov
@nikola-nikrasov 2 жыл бұрын
Numba может в gpu?
@ramza2779
@ramza2779 2 жыл бұрын
А можно из такой программы на python получить его листинг на ассемблере.Интересно посмотреть на оптимизацию. Для языка Си это gcc -S
@zproger
@zproger 2 жыл бұрын
Python не компилируется, можно разве что получить листинг байт-кода через dis
@myriaxont
@myriaxont 2 жыл бұрын
@@zproger Вы сами в начале ролика говорили, "и переводит данный байт-код в оптимизированный машинный код", раз уж на то пошло. И да, JIT как раз таки и означает компиляцию на ходу. В принципе, можно посмотреть через дебаггер (тот же x64dbg), во что этот JIT переводит данную функцию. Это конечно не так удобно, как с AOT компиляцией, где сразу можно получить ассемблер листинг, но по крайней мере реально.
@mkalalaka
@mkalalaka 2 жыл бұрын
@@myriaxont получить наверно можно в итоге, но читать такое, можно повеситься. там будет куча лютых вещей, внесенных джит и потом компилятором, на человеческий разум явно не рассчитанное. даже обычный код, писаный на Си сложно читать. ковырялся в детстве в играх. тогда еще особо оптимизацией не заморачивались, а вещи типа ЖаваВМ или .НЕТ были скорее теорией. но все решается практикой. если задаться целью, то будешь и ассемблер читать как стихи Агнии Барто.
@agentsmit09
@agentsmit09 2 жыл бұрын
@@mkalalaka Вы наверное что-то путаете. В те далекие времена оптимизация как раз была повсюду и в компиляторах, и в идеях программиста. А то бы тогда не появился Duck Nuken и Doom с прорывной на тот момент графикой. А сложно ли читать код языка ассемблера или код на С/С++, тут все зависит от привычек и навыков. Я иногда разбираю ассемблерный код, мне легко понять что там в мозгу машины происходит. А асм у .NET настольно простой, что можно сказать что ты исходник смотришь.
@Milk-rt3mn
@Milk-rt3mn 2 жыл бұрын
Тоесть нумба просто переводит питон в си и поэтому быстрее?
@zproger
@zproger 2 жыл бұрын
Переводит в машинный код и дальше идет сразу на исполнение. Тут подробней: ru.wikipedia.org/wiki/JIT-компиляция
@Milk-rt3mn
@Milk-rt3mn 2 жыл бұрын
@@zproger Спасибо!
@Anonim-im6ln
@Anonim-im6ln 2 жыл бұрын
Клас!)👍💚
@zproger
@zproger 2 жыл бұрын
Благодарю
@user-nq1qx7qt5i
@user-nq1qx7qt5i 2 жыл бұрын
Зачем ругаешься, доргой? ;) Кто такой нумба, кто такой пампас?
@zproger
@zproger 2 жыл бұрын
Больше не буду =)
@dazdess
@dazdess 2 жыл бұрын
Можно про асинхронность?
@zproger
@zproger 2 жыл бұрын
Да, но сначала надо придумать о чем рассказывать =)
@pavel12501
@pavel12501 Жыл бұрын
Боже мой, что ты несешь про с++. Ты добавь оптимизацию -O3. Ассемблерные вставки??? Да компилятор с++ все в ассемблер переводит. Если ты специалист по python, дак сравнивай с paython, зачем делать отвратительное сравнение с C++??? В котором ты ничего не понимаешь. Собрал то что у тебя было на экране и замерял время с оптимизацией, получилось 2.4 миллисекунды КАРЛ. И еще огромный вопрос, требуются ли реально double для этого расчета??? Если его убрать прирост в два раза. Что логично, ведь у проца есть специальные инструкции, для таких расчетов и он может оптимизнуть. В общем подход странный используйте лучше пайтон и сравнивайте его с другими интерпретируемыми языками.
@joehart7382
@joehart7382 2 жыл бұрын
Давай очень интересно
@zproger
@zproger 2 жыл бұрын
=)
@user-os1xg1rh4c
@user-os1xg1rh4c 2 жыл бұрын
все радости numpy разбиваются о многокомпонентный код. можно конечно искать чистые функции, которые просто вычисления делают. но когда намешаны строки, массивы, операции ввода-вывода, сложно куда-то numba запихнуть. например, взять craft-text-detector. на arm (raspberry pi) он обрабатывает страницу текста целую минуту,т.к. без gpu. ускорить его та еще задача.
@mechan1sm_
@mechan1sm_ 2 жыл бұрын
А нельзя было для g++ указать флаг "-O2" или "-O3"??? Закликбейтил, получается.
@zproger
@zproger 2 жыл бұрын
Можно было, не вспомнил об этом даже
@nekitos3269
@nekitos3269 Жыл бұрын
Вообще не хочет работать. Попробовал несколько функций декарировать в своем app, но везде какие-то ошибки возникают, короче хрень полная.
@richblessbigsmoke9781
@richblessbigsmoke9781 2 жыл бұрын
В какой прогрессе вы пишите код?
@zproger
@zproger 2 жыл бұрын
прогрессе?
@richblessbigsmoke9781
@richblessbigsmoke9781 2 жыл бұрын
@@zproger ой программе
@richblessbigsmoke9781
@richblessbigsmoke9781 2 жыл бұрын
@@zproger в каком IDE
@zproger
@zproger 2 жыл бұрын
@@richblessbigsmoke9781 VS Code
@slam48rus
@slam48rus Жыл бұрын
нужно
@user-kp4xy7iu9e
@user-kp4xy7iu9e 6 ай бұрын
Лол, скомпилировал С++ код с выключеными оптимизациями и удивляешься почему же он медленее питона. Кроме того. для питона решил использовать динамическое программирование а на С++ подсчеты в лоб.
@alexizz2594
@alexizz2594 2 жыл бұрын
Видео не понравилось . Просто не понимаю зачем сравнивать *зеленых попугаев* с *желтыми удавами *
@zproger
@zproger 2 жыл бұрын
Ну а почему бы и нет =)
@alexizz2594
@alexizz2594 2 жыл бұрын
@@zproger Байт в заголовке про в сорок раз вполне нормально - а вот в самом видео сравнивать *закат с дождем* смысла не вижу ибо синтетика зло!
@user-uo6rq1bl5g
@user-uo6rq1bl5g 2 жыл бұрын
Здравствуйте Zproger [it]. Возможно ли писать вирусы на Python
@zproger
@zproger 2 жыл бұрын
Чисто технически да, а вот по закону нет =)
@user-uo6rq1bl5g
@user-uo6rq1bl5g 2 жыл бұрын
@@zproger :)
@ddvx_kris
@ddvx_kris 2 жыл бұрын
нежелательно как по закону так и на практике, пайтон не имеет особых инструментов для взаимодействия с системой
@predatel_rodini
@predatel_rodini 2 жыл бұрын
Школьник детектед
@disadiuauiosdaiaudiossaais8862
@disadiuauiosdaiaudiossaais8862 2 жыл бұрын
@@ddvx_kris можно, я писал ратник на пмтоне, но ехе фпйл был очень большим... (20мб)
@aeforeve1234
@aeforeve1234 2 жыл бұрын
ужасающе нубское видое ... открой для себя уже -O3 в gcc чтото может быть быстрее С/C++ только в одном случае - если юзает высокооптимизарованные/мультитродовые библиотеки
@sergant445
@sergant445 4 ай бұрын
да что вы... ваш питон по скорости - отстой
@zproger
@zproger 4 ай бұрын
смотря какие задачи, я могу еще rust использовать
@sergant445
@sergant445 4 ай бұрын
@@zproger когда я сделал 1 на C++ и такое-же, но на Python был такой результат: C++ моментально запустил и всё работало быстро, python где-то секунд 5-6 запускал и всё лагало ссильно
@nikd1ssv
@nikd1ssv 2 жыл бұрын
Ассемблер в numba так или иначе присутствует, у функций после декорации numba.jit (возвращается не функция, а специальный, вызываемый класс диспетчер) есть методы inspect_... в том числе inspect_asm и inspect_llvm
@myriaxont
@myriaxont 2 жыл бұрын
Есть много моментов где бенчмарки автора видео попадают под сомнение (к примеру отсутствие флагов оптимизации для C++) - Так что я провел аналогичные бенчмарки, но уже для Python+Numba и Golang. Попытался максимально скопировать код бенчмарка is_prime на Python, насколько было видно из видео. На Golang сделал имплементацию алгоритма с распараллеливанием. У меня вышло, что код на Python выполнялся на моем (не самом новом) CPU ~2.8s, в то время как на Go ~1.6s. Полагаю на C++ тоже можно было разбить на потоки аналогично Go, и там бы результат мог бы выйти не хуже. Имплементация бенчмарка на Python: pastebin.com/S6ZgT0xb Имплементация бенчмарка на Golang: pastebin.com/w9hmvWL5
@minatych1435
@minatych1435 2 жыл бұрын
Результат на плюсах и так быстрее в бесконечность раз. Автор ошибся с вычислениями.
@user-zs1wn4vk2e
@user-zs1wn4vk2e Жыл бұрын
о, мой лайкос тысячный😎🤟 я победил нах😀
@zproger
@zproger Жыл бұрын
😎
@user-zs1wn4vk2e
@user-zs1wn4vk2e Жыл бұрын
@@zproger 😎👍😀
@a.osethkin55
@a.osethkin55 2 жыл бұрын
Спасибо
@zproger
@zproger 2 жыл бұрын
=)
Can This Bubble Save My Life? 😱
00:55
Topper Guild
Рет қаралды 85 МЛН
Unveiling my winning secret to defeating Maxim!😎| Free Fire Official
00:14
Garena Free Fire Global
Рет қаралды 10 МЛН
SPILLED CHOCKY MILK PRANK ON BROTHER 😂 #shorts
00:12
Savage Vlogs
Рет қаралды 50 МЛН
Python + PyQt5 + PostgreSQL (часть 1)
25:25
Перлины: Владислав и Елена
Рет қаралды 14 М.
10 признаков того, что вы новичок в Python
4:59
Радио Sputnik 26 08 2024. Михаил Хазин
44:04
Can This Bubble Save My Life? 😱
00:55
Topper Guild
Рет қаралды 85 МЛН