list в python под капотом реализован как ArrayList, а не LinkedList (более строго - динамический вектор указателей). В любом случае, средняя асимптотика у него тоже O(1) (хотя худшая O(n), но возникает очень редко)
Спасибо за видео. Начал активно учить пайтон месяц назад. Теперь, помимо всего прочего, дополнительно стало понятно одно из предназначений декораторов, почему они так удобны
Не знаю как алгоритмы порекомендовали мне это не популярное видео, но я очень рад этой рекомендации. Хоть как обычно ничего не понял, но тема производительности для меня правда интересная, буду разбираться ) Даже решил подписаться на твой канал.
Мне почему-то кажется, что если твой код на пайтон работает недостаточно быстро - стоит вернуться в самое начало разработки и признать, что ты выбрал не тот язык программирования. Пайтон нужен не для скорости работы программы, а для того, чтобы максимально быстро написать то, что будет работать.
@@omicron-IT Да я не ваше видео критикую. Вы-то как раз правильно все сказали. Мне в целом не понятна концепция ускорения пайтона. То-бишь, ускорение его сверх того, что дает знание стандартных алгоритмов. Тот же pypy или наличие классических массивов в пайтоне выглядит странно как по мне. Везде объекты, а тут вдруг классический массив...
спасибо большое! поэкспериментировал с @jit и получилось так что считать ту же сумму чисел гораздо быстрее с помощью for ~0.4 секунды на 1 трлн итераций а вот sum переваливает за 5 секунд еще на 100 миллионах итераций
В питоне list это динамический масссив, а не связный список. В коде питона удаление N элемента это не освобождение памяти и изменение укзателей, а memmove куска массива влево. Я точно не знаю, но numpy быстрее скорее всего потому, что в нём массив хранит данные (когда в итоне там хранятся ссылки на сами объекты), из-за этого доступ информации более быстрый и все функции для работы с массвом имеют меньше обстракций
Всё это прекрасно, но скажу лишь одно в реальных проектах, мало где можно использовать Numba. Это может пригодиться для работы с музыкой так как там нужна быстрая работа с массивом чисел. При работе с нейросетями можно использовать, но не везде. Вещь хорошая, но узкоспециализированная.
Спасибо, интересно рассказываете. Всё никак не пойму, зачем люди в образовательное видео вставляют фоновую музыку. Зрители же не для развлечения такое смотрят, а для получения полезной информации. На мой взгляд в таком случае музыка только отвлекает, а слишком громкая тем более.
Мучаюсь с проблемой как бы ускорить код при использовании библиотеки python-docx. Имеется ворд файл в нем таблица на 50 страниц, я тупо циклом читаю каждую строку талицы и если значение совпадает с фильтром пишу в список. Так на перебор около 1000 строк таблицы уходит минуты 3. Вот как бы ускорить это простое действие(((
@@nikd1ssv Оказывается лучше взять всю таблицу сразу записать к примеру в список как текст, и уже работать со списком делать что надо. Скорость раз в 10 быстрее.
@@nikd1ssv Короче смирился с тем что долго читает документ. Ничего толкового не нашел. Причем чем больше таблица тем пропорционально медленнее читается 1 ячейка.
В начале видео код С++ написан явно не очень хорошо. Во-первых, зачем создавать константу и массив, потом заполнять этот массив, в цикле, который выполняется 150000 раз? К тому же, лучше создавать массив таких размеров не на стеке, а на куче, можно заюзать vector (он там сверху даже подключен :). Дальше, в условии третьего по счету цикла: i < std::sqrt(n) -> сравнивать так int с double это смело, конечно, кроме того, вычислять заново этот самый корень для каждой итерации для одного и того же числа - бессмысленно (это будет оптимизировано msvc, но все же, это плохой тон). Ну и зачем юзать printf, если это С++, где std::cout? Зачем юзать С-шный каст типа, почему бы не использовать static_cast? Не нужно измерять время выполнения программы таким образом. Кстати, опять же, это точно С++? Если да, то почему , если есть ?). Вообще лучше скомпилировать программу (или сбилдить проект через ту же вижлу), зайти в powershell и использовать утилиту Measure-Command, чтобы измерить время выполнения нормально.
Ускорить то его можно, вот только не везде и не всегда. И годится он в основном только для нейронок (и то, там почти все библиотеки написаны на С, без С питон ничто), для автоматизации чего либо и всё. Бэкенд я бы на нём в 2023 делать не стал, для это есть GО, или Node.js, или даже C#. Вообще не понимаю из-за чего этот язык стал таким популярным? Это как с модой в области одежды - придумал однажды кто-то носить брюки клёш и весь мир с ума сошёл, все надели на себя это уродство с широченными штанинами-колоколами. А позже все одумались и выбросили это недоразумение. Не хочу сказать, что питон это недоразумение, но хайп вокруг него сильно раздут и его тащат везде куда не следует - пишут на нём GUI после чего даже мощные компьютеры тормозят (то же самое и с JS и его ублюдочным электроном), создают на питоне мобильные приложения на мерзком Kivy, даже игры пытаются делать. А питон совсем не про это - он как клей для склеивания разных модулей написанных на С и С++, для простеньких скриптов - вот тут он очень удобен. А уж обучать на нём программированию это вообще бред. Скриптовой язык с динамической типизацией. И куда мир катится?
Не вижу ни 1 объективного аргумента, заменить в твоём спиче python на условный (!) java (ничего против не имею) и будет такой же текст. Куда мир катиться, когда люди буквально уверовали в то, что python плохой и не могу объяснить почему. А сравнивать I/O-bound-ориентированный язык с CPU - смешно, как и ограничивать себя в технологиях: "без С питон ничто". Против С и С++ ничего не имею, сам на них пишу динамические библиотеки для распределения ресурсозатратной нагрузки с питона на них
Он всем нравится потому что удобен. Легко читается, легко понимается, все лаконично, логично. Читаешь код c++ и охуеваешь. Тот же java. Все эти языки нужно жечь и создать с 0.
Декоратор - это интерфейс numba для взаимодействия с python. Часть numba же написана на C и C++ У numpy же всё идёт точно также. Часть написана на python, часть - на C и C++ и других языках
@@omicron-IT И....? Всеравно python code который потом вызывает нумба функцию (возможно врапер над eval или собственный парсер python для кода python для оптимизации...... ) Всеравно - как врапер + врапер может быть быстрее прямого интерфейса для numpy (C интерфейса) ?