URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 132423
[ Назад ]

Исходное сообщение
"Для Python предложен JIT-компилятор, использующий технику copy-and-patch"

Отправлено opennews , 26-Дек-23 14:28 
Брандт Букер (Brandt Bucher) из компании Microsoft, входящий в число core-разработчиков CPython и  работающий команде, занимающейся увеличением производительности интерпретатора CPython, опубликовал  реализацию JIT-компилятора для Python, использующую технику Copy-and-Patch. Публикация JIT приурочена к Рождеству и анонс написан в стихах...

Подробнее: https://www.opennet.dev/opennews/art.shtml?num=60352


Содержание

Сообщения в этом обсуждении
"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 14:28 
> runtime-компоненты сводятся примерно к 300 вручную написанным строкам на языке Си и 3000 сгенерированным строкам кода на Си.

Интересно, сколько дыр будет в этих 300 строках?


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 18:31 
В ненаписанных 300 строках кода дыр точно не будет.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено mister_0 , 26-Дек-23 23:58 
frama-c и не будет ни одной

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 14:35 
Помнится Google все пыталась как-то ускорить Python, проекты делалЮ работников напрягал. Потом плюнули на это неблагодарное дело и создали Go. Теперь вот Microsoft что-то пытается сделать там, где это не особо легко by-design. Лично я жду mojo на посмотреть, что они там сделают.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 14:45 
Гугл никогда ничего не сделал за всю свою историю, так что не удивительно. Да и успехи мс с питоном всё наглядно демонстрируют.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено ebpfsfan , 26-Дек-23 15:15 
ога, половина интернета в котором ты сидишь сделана гуглом, все так

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 15:19 
>сделана гуглом

ты видимо хотел сказать куплена гуглом, какое отношение убитых продуктов к живым там сейчас?

вообще, разработка софта там явно не в приоритете


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено C00l_ni66a , 26-Дек-23 22:10 
>какое соотношение

https://killedbygoogle.com/


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Пряник , 26-Дек-23 15:58 
Да? Они Apache/Nginx/PHP/MySQL/Postfix написали?

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 16:05 
Нет, но гугл сделал ASP.NET MVC.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Илья , 27-Дек-23 17:01 
ASP net MVC amazon сделали же.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено амоним , 28-Дек-23 00:31 
вот врете. это старая разработка фейсбука

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Tron is Whistling , 26-Дек-23 14:47 
А получилось только у фейсбука с PHP - HHVM. Но потом идеи затянули в PHP 7 и 8, и HHVM тоже стал не нужен.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Вы забыли заполнить поле Name , 26-Дек-23 15:54 
Google сделал v8, так что ускорять они умеют. Ты говоришь про https://github.com/google-deepmind/s6 ? Ну есть numba в замену к нему.

Более того есть другие технологии, тот же https://github.com/facebookincubator/cinder

В ядре питона уже поняли что нужно ускорять и занимаются этим, хотя пока до внедрения жита не дошло, но это в планах https://github.com/faster-cpython/ideas

Кстати, pyston на практике не так сильно повышает производительность в отличие от pypy

Что касается go, то это другой язык.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Легивон , 26-Дек-23 17:57 
Потому что есть tradeoff между достигаемой скоростью и возможностью интеграции с любыми внешними окружениями.
Никого почему-то не смущает что все ML работает на таком медленном питоне. Возможности по интеграции могут быть гораздо важнее скорости числодробления (последним можно кстати заниматься на numpy и т.п. с такими же сишными скоростями)
А вот с js получилось прямо забавно. Ведь удалось достигнуть и правда запредельных результатов. А потом... потом они просто взяли и отдали свой сверх остный инструмент самым ущербным мартышкам. И что толку? Браузер всеравно тормозит ровно настолько, чтобы страницы хоть как-то открывались. Ничего бы и не изменилось будь в client side скриптинге медленный питон.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Витюшка , 26-Дек-23 18:34 
Только тут они написали говнокод и выйграли (заработали на этом), а в другом случае бы так не получилось.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Легивон , 26-Дек-23 20:34 
Тоесть вы хотите сказать, что до появления js в вебе сайтов не было?
Или что если бы не было client side скриптинга сайты были бы хуже?

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Советский инженер , 30-Дек-23 11:03 
>Или что если бы не было client side скриптинга сайты были бы хуже?

википедия была бы такой же,
а вот всякие магазины и другие онлайнбанкинги не существовали бы.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Легивон , 30-Дек-23 16:01 
> всякие магазины и другие онлайнбанкинги не существовали бы.

Это бред.
Во-первых контр пример: магазины существовали до засилья js в вебе.
Во-вторых: вы рассуждаете про отсутствие js полагая что без него браузеры не стали бы развиваться в сторону показа динамического контейнта. Это неверно, конечно они бы развивались дальше. Например показ пользователю вариантов дополнений введенного текста (например адреса) мог быть реализован стандартировано на уровне браузера специальным типом поля с указанием url куда отправлять ранее введенный текст для получения подсказки. Проверки правильности ввода - аналогично.
Веб мог быть гораздо более стандартизированным, понятным и управляемым если бы сиюминутные хотелки не победили. Но теперь его уже не удастся отрефакторить. Только бросить и сделать новый.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 27-Дек-23 00:04 
>  все ML работает на таком медленном питоне

На питуне там только "бизнес логика". Буквально обёртки сишных/плюсовых функции типа "взять данные там", "передать данные туда", "сделать из этого конвейер", "посчитать".
Эсли бы бекенд этого добра был бы таки на питоне, то работало бы оно везде, с любыми видяхами и процами, только в миллион раз медленнее.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 19:36 
Вообще-то у Go корни древнее вашего этого питона. Гугли историю, в том числе plan9.

Гуглу повезло что оказались под боком спецы которые пуд соли съели на создании языков программирования, в Go затащили все самые лучшие решения за их жизнь.

Гуглу это надо было чтоб заменить легаси на сях и плюсах.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Витюшка , 26-Дек-23 22:39 
И при этом "какой-то" пацан из универа, которому надоело кодить потом на С++ написал самый передовой язык программирования из всех, которые я знаю.

Который гораздо лучше Go, хотя бы в обработке ошибок.

А знаю я около 20 языков программирования. И это первая и единственная реальная замена чистому С.

У Go есть своя ниша, наверное очень неплохой был язык для своего времени. Но garbage collection сразу определил его место в истории.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено leap42 , 27-Дек-23 09:26 
> Который гораздо лучше Go, хотя бы в обработке ошибок.

ахахаха, знаете, да, что комитет плюсецкого рассматривает уход от исключений в сторону обработки ошибок аля Go? если бы вы хоть один(!) раз написали серьёзный многопоточный проект, то знали бы что не так с исключениями, их обработкой и раскруткой стека при многопоточной нагрузке, но вы не знаете)


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Витюшка , 27-Дек-23 10:17 
Ты о чём вообще? Не осилил прочитать комментарий и бросился печатать ответ как увидел слово С++?

При чём тут исключения?
В Zig вообще нет никаких исключений.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 27-Дек-23 22:06 
> если бы вы хоть один(!) раз написали серьёзный многопоточный проект, то знали бы что не так с исключениями, их обработкой и раскруткой стека при многопоточной нагрузке,

С исключениями в многопоточных приложениях все точно также, как и с неисключениями в многопоточных приложениях... Дело в многопоточных приложениях, а не в исключениях.

В компиляторах/либах баги бывали, но вроде это фиксилось со временем. В mingw такой баг ~10 лет встречался. Примерно с 2009-го по 2018-й. Вообще, в 2010-м было пофикшено в апстриме mingw, но там смотря как именно mingw собирали и как часто тулчейн обновлялся. В Qt даже в 2018-м прям официально скачивалась версия с "глючным" mingw. А в ответе было "Qt не использует исключения, поэтому у нас всё работает... а вы страдайте ;)"

В виндовых сборках GLib/GTK аналогично получалось, но пофиксить удалось сильно быстрее.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено th3m3 , 26-Дек-23 23:40 
>жду mojo на посмотреть, что они там сделают.

Mojo уже можно смотреть и писать. Они всё выложили.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 27-Дек-23 01:11 
Да знаю я. У них даже онлайн среда есть для "попробовать" - https://playground.modular.com/
Но времени пока нет. В предыдущий раз как пробовал все было сыровата и в глубокой альфе.
Еще вопрос волнует - не сделают ли они при релизе платным mojo или с какими-либо ограничениями в бесплатной версии.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 28-Дек-23 01:52 
Вот тут статейка на Хабре подоспела по поводу сравнения производительности Mojo с С+++ библиотеками. Вывод: Mojo лучшим пока проигрыват, но не сильно (а чистый Python уделает как тузик грелку)

https://habr.com/ru/articles/783138/


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 14:55 
>При работе JIT в процессе выполнения программы осуществляется перебор созданных интерпретатором инструкций байткода и копирование для каждой инструкции заранее скомпилированного машинного кода в область памяти с исполняемым кодом, а также изменение на лету инструкций для подстановки в них обрабатываемых данных (JIT копирует готовые шаблоны уже скомпилированных функций и подставляет в них необходимые значения, такие как аргументы и константы). При загрузке объектных файлов также осуществляется копирование машинного кода в память и подстановка внешних символов.

Стековая машина что-ли? Я писал jit-компищятор на основе техники copy and patch. Было quick and dirty. Кончилось тем, что я это выкинул и написал x86-специфичный аллокатор регистров + энкодер инструкций (constexpr функции!) + constant size структуру для хранения инструкций + двухпроходный компилятор + кучу кода в inline assembly для интеграции отжитенного кода в остальную программу - все функции, вызываемые из горячего цикла пришлось в виде ассемблера в программу всунуть.

Пoтому что сишный и плюсовый код норовили заюзать регистры, которые я заюзал в jitе, зарезервировать их оказалось невозможно ни в gcc, ни в шланге (register type varName asm ("regName") не резервирует регистр!), сохранять на стеке перед каждым вызовом ВСЕ РЕГИСТРЫ (потому что компиляторы не имеют интерфейса, чтобы им сообщить свою calling convention для каждой функции и/или блока кода отдельно) ОЧЕНЬ тормознуто, при этом компилеро-сгенерированный код (по подстановкам в asm-блоках, не буду же я регистры напрямую юзать, это неудобно) не гнушался портить %rbp, поэтому пришлось всунуть его в clobber-list, теперь компилер орёт, что это deprecated.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 15:06 
Все регистры пришлось сохранять ещё потому, что на максимальных флагах защиты от всех микроархитектурных уязвимостей компилер всё нулил при выходе из функции, не анализируя, откуда функция вызывается. Ещё очень неудобно вызывать функции из асм-кода. Приходртся самому всё класть на стэк. Изменяется прототип - всё насмарку, уследить за этим трудно. Зато у меня одна из самых быстрых программ. К сожалению пока неопубликована. У меня есть кое-какие идеи как этот джит выкинуть, сгенерировав экспоненциально много (а для этого нужно будет произвести большой поиск в графе состояний ветвями и границами, при этом результат гарантированно даст не очень большой показатель экспоненты, так что будет feasible) функций силами компилятора, шаблонов, constexpr и хардкода, а потом выбрав нужную. Если покажет производительрость наравне или выше джита - вообще джит выкину. Тогда и зарелижу.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 15:11 
Ты =очень= крутой, аноним.

Но пользоваться твоей программой я, конечно, не буду.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 15:17 
А никто и не заставляет :). Кушайте Растишку.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 18:02 
Чем больше я понимаю ЯП и учу Схему, тем больше пишу на баше.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 15:19 
И я не крутой. Я просто перфекционист.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено YetAnotherOnanym , 26-Дек-23 18:05 
Я так понимаю, если тебя вовремя не остановить, ты дойдёшь до того, что всю computationslly-heavy функциональность запихнёшь в fpga'шку.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено x3who , 27-Дек-23 00:29 
> Я так понимаю, если тебя вовремя не остановить, ты дойдёшь до того, что всю computationslly-heavy функциональность запихнёшь в fpga'шку.

Чот вот это не пахнет даже минимизацией и переводом в базис FPGA-шкинскиких LU: "сгенерировав экспоненциально много функций силами компилятора"


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Вы забыли заполнить поле Name , 26-Дек-23 17:40 
> Ты =очень= крутой, аноним.
> Но пользоваться твоей программой я, конечно, не буду.

Если она есть вообще.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 16:01 
а что делает твой софт?

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 16:34 
Когда доделаю - на опеннете может появиться анонс. А пока - "ничего".

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено pavlinux , 26-Дек-23 16:58 
Приз за лучший "Коммент Года 2023"!  

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 22:44 
Тогда подождём. А пока - "НЕ НУЖНО".

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 27-Дек-23 12:50 
"На словах я Лев Толстой, а не деле..."
Всё как обычно)

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 15:14 
>сохранять на стеке

Вообще сохранять на стеке очень тормознуто, горячий обрамляющий цикл сделан так, что стэк код вообще редко трогает и оптимизирован с помощью llvm-mca. Отjitенный код стек вообще не трогает, переходы туда и обратно jmpами, все аргументы в регистрах.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноньимъ , 27-Дек-23 00:39 
И как оно работает в многопотоке?

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 27-Дек-23 02:55 
Отлично.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Проходил мимо , 26-Дек-23 15:57 
Судя по описанию, вами была проделана впечатляющая работа. Но у меня, после прочитанного, создалось впечатление, что проще было бы критичное по скорости ядро "движка" сразу писать на ассемблере, а на всем остальном делать только высокоуровневую обвязку.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 16:13 
Не, clang генерит быстрый код, когда часть из входных данных захардкодожена.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Пряник , 26-Дек-23 16:04 
Это та самая борьба с компилятором, которую вылечили в расте?

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Витюшка , 26-Дек-23 17:37 
Выглядит очень интересно, как минимум много умных услов)

А что за проект? Язык программирования? Что он вообще делает?

Хобби? Работа? Наука?
Публикации есть?

Я в этом не силён. Но Zig позволяет тебе выбирать calling convention для каждой функции.

callconv(WINAPI)
callconv(.Inline)
callconv(.Naked)
callconv(.C)

Наверное ещё что-то. Много оптимизаций встроено в язык.

Писать compile time код - это просто песня. Generic код тоже.

Есть ассемблерные вставки в языке (из коробки).

Можно вызывать С код и С++.
Можно даже С++ код компилировать компилятором Zig! Те просто берёшь и компилируешь свой С++, а потом добавляешь Zig потихоньку. Переписывать всё не нужно.

Для твоей задач подходит идеально.
Быстрее чем на Zig уже не будет.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 18:29 
>Но Zig позволяет тебе выбирать calling convention для каждой функции.

Да де-факто стандартные расширения сишки тоже позволяют, но из приведённого вами списка. При этом компилятор сгенерирует ненужные перебросы из одних регистров в другие с сохранениями состояния caller-saved на стеке. Мой код же стека касается в редких случаях - когда нужно выделить память. Тогда уже гулять-так гулять. Остальная свистопляска идёт в регистрах и кэше.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноньимъ , 27-Дек-23 00:37 
Стек типо в кеше не присутствует?

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 27-Дек-23 03:03 
Присутствует, так как иногда приходится дёргать. Но основные обращения к памяти - это считывание данных и запись результатов.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено x3who , 27-Дек-23 00:39 
> ненужные перебросы из одних регистров в другие с сохранениями состояния caller-saved на стеке.

Если такое есть без причины - то это копулятор лучше чинить.. Это же его сфера ответственности!


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 27-Дек-23 03:20 
У компилятора есть причины её не инлайнить - она виртуальная. Остаётся thiscallом её вызывать. А thiscall - это конкретная конвенция, а поддержки кастомных конвенций увы нет.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 15:07 
Ускоряют питон, а он все не ускоряется

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено sig11 , 26-Дек-23 15:45 
Кто сказал, что ускоряют?
"а в среднем отстал по производительности на 35%,"

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 27-Дек-23 12:39 
https://opennet.ru/59641-python

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено _kp , 26-Дек-23 15:17 
JIT - это лишние тормоза, считай полумеры.
Так бы и написали что компиляцию в нативный код не осилили, ибо из за динамической типизации все равно фигня с производительностью.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Bottle , 26-Дек-23 17:04 
JIT потенциально обладает преимуществом перед обычной компиляцией. Вот есть у тебя куча ветвлений switch-case в коде, профилировщик собирает статистику и на основе этого компилирует код так, чтобы первыми проверялись самые частые case'ы.
Это, к слову, также положено в основу PGO.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 17:16 
Ты с if/else не попутал?

switch/case выстраивает jump table, там похер в каком порядке идут значения


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Bottle , 26-Дек-23 18:27 
Семантически switch-case и if-else одинаковы, современные компиляторы их разворачивают в одинаковые инструкции 100%. Это раньше могли быть приколы вида того, что for(;;) и while(true) преобразовались в разные ассемблерных инструкции.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 19:04 
Вы путаете обычный switch и switch с паттерн матчингом. Для обычного свитча компилятор собирает lookup табличку, в которой jmp на нужную ветку идёт даже без cmp инструкций. А вот паттерн матчинг разворачивается в обычные if со всеми вытекающими

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноньимъ , 27-Дек-23 00:47 
Это исключительно зависит от конкретного ЯП.
Что там будет вкомпилировпнно и или выполненно в итоге.
Ифы тоже можно в jmp развернуть.

Bottle выше правильно пишет. Это одно и то же в разной записи.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 19:10 
Что ты, блин, несёшь? Ты сам то проверял? Ничего там не одинаково.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 19:28 
Это если у тебя switch по перечисляемому+упорядочиваемому типу, и если используется непрерывный диапазон значений этого типа. Попробуй создать джамптабличку для:

switch(n) {
   case 1: ...;
   case 2: ...;
   case 3: ...;
   case 5: ...;
   case 8: ...;
   case 13: ...;
   ...
   case fib(n): ...; // это на случай если твоя недопёрла как посчитать остальные константы
   ...
   default: ...;
}

Я б рекомендовал иногда заглядывать в вывод gcc -S, чтобы понимать, какой код он генерирует. Какой смысл вообще знать про джамптаблицы, если ты не знаешь как высокоуровневый код превращается в низкоуровневый?


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено all_glory_to_the_hypnotoad , 26-Дек-23 20:22 
Для первого куска делаешь таблицу с null-дырками, для второго обычное дерево или вообще линейный поиск если case-ов мало. А как оно будет на самом деле зависит от компилятора, так-то некоторые и эквивалентный каскад из if-ов умеют в таблицу упаковывать.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 20:55 
Умница дочка!

Теперь ты можешь ещё раз похвастаться беспримерными своими познаниями, сделав следующий шаг, объяснив тому анониму с его верой в джамптейблы, как ко всему что ты описываешь применимы JIT и PGO оптимизации.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено all_glory_to_the_hypnotoad , 26-Дек-23 17:40 
JIT жрёт память и добавляет внезапные лаги. Так что лучше иметь стабильный по задержкам, но чуть менее производительный код, чем JIT со всеми его минусами. Ну или иметь возможность включать JIT только для определённых функций/модуля

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Вы забыли заполнить поле Name , 26-Дек-23 17:51 
> JIT жрёт память и добавляет внезапные лаги. Так что лучше иметь стабильный
> по задержкам, но чуть менее производительный код, чем JIT со всеми
> его минусами. Ну или иметь возможность включать JIT только для определённых
> функций/модуля

Вроде как в нормальных компиляторах jit не всегда задействуется. Там несколько этапов от простого интерпретатора байткода до полноценного jit. В зависимости от статистики происходит переключение между ними. По крайней мере так сделано в v8 и так планируют делать в python


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноньимъ , 27-Дек-23 00:56 
Лучше только в системах реального времени.
А вообще, нет, не лучше.

И нормальный джит отрабатывает один раз, после чего все летает без всяких задержек.
Пример жава и дотнет. Особенно последний, потому как оно в ровень с нативным кодом может.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 27-Дек-23 02:46 
> Лучше только в системах реального времени.
> А вообще, нет, не лучше.
> И нормальный джит отрабатывает один раз, после чего все летает без всяких
> задержек.
> Пример жава и дотнет. Особенно последний, потому как оно в ровень с
> нативным кодом может.

Особенно это видно на тормозящих играх на unity


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноньимъ , 27-Дек-23 02:55 
Что угодно на чём угодно может тормозить. По самым разным причинам.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено all_glory_to_the_hypnotoad , 27-Дек-23 03:41 
Но тут по вполне конкретным причинам, которых нет у других ЯП. Например, из-за GC. Хотя может и из-за JIT тоже. В итоге никакого 'в ровень' не получается.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноньимъ , 27-Дек-23 16:59 
> Но тут по вполне конкретным причинам, которых нет у других ЯП. Например,
> из-за GC. Хотя может и из-за JIT тоже. В итоге никакого
> 'в ровень' не получается.

GC в ЯП никаких нет.

Получается не только лишь в ровень, если руки прямые.

Но никогда не будет с дотнетом и шарпом в ровень идти хоть сишка хоть сипипишка которая туже сложность со всеми необходимыми проверками и защитами реализует.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено all_glory_to_the_hypnotoad , 28-Дек-23 02:14 
> Получается не только лишь в ровень, если руки прямые - настлько древняя мантра, что в 2023 даже уже не смешно

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено all_glory_to_the_hypnotoad , 27-Дек-23 03:43 
Лучше, например, в питоне, он тормозит равномерно. И в компилируемых ЯП вроде с++

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноньимъ , 27-Дек-23 17:01 
В Питоне глобальный лок всё ещё никуда не делся.
То как тормозит питон математикой не описать, нужно индусов звать танец танцевать.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено all_glory_to_the_hypnotoad , 28-Дек-23 02:19 
Есть, так не трогай его. Основная часть питонячего кода это однопоточные приложения. И пишу же про равномерность торможения, а не про просто торможение. Например, в тестах сервис длительно показывает хорошие персентили по задржкам, а в проде спустя большой uptime внезапно просаживается условный 99-ый ... потому что что-то потекло и GC зафрагментировал память и начал лютовать когда ему вздумается. В стандартном питоне такого нет. В Java и JS постоянно, особенно это хорошо заметно по браузерам.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено _kp , 26-Дек-23 18:16 
В теории, если считать скорость постоянной перекопиляции пренебрежимо мала, то есть когда задержка не заметна, и раздражает пользователя.
А для пользователя не нативное приложение - неполноценное приложение.
Ведь никто в здравом уме не поставит что то типа VsCode по умолчанию вместо нотепада как редактор по умолчанию.

Исключения есть, например когда приложение например на Яве и стартует мгновенно, и работает быстро, и неискушенный пользователь ничего не замечает. Но, это и редкость, и обычно небольшие программы.



"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено BrainFucker , 26-Дек-23 20:25 
> Так бы и написали что компиляцию в нативный код не осилили, ибо из за динамической типизации все равно фигня с производительностью.

В будущем сделают компиляцию в машинный код с помощью нейросетей. А так как ресурсов для запуска такого компилятора локально ни у кого е будет, она будет облачной.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено _kp , 27-Дек-23 00:34 

> В будущем сделают компиляцию в машинный код с помощью нейросетей.

Пока сподобятся, с этим справится процессор от уного чайника, или рак на горе свиснет.

> как ресурсов для запуска такого компилятора локально ни у кого не будет

Ресурсов достаточно и сейчас, но у кого то компиляция чего то рпзмером с Хрлма займет минуты, у кого то пол-дня, и более.
Но, если например у игрушки от компиляции в нативный код  fps возрастет хотя бы вдвое, то есть смысл даже в компилчции на бюджетном сиартфоне. Да пусть он хоть три дня пыхтит, играть то поболее придется.

Кстати, вменяемые смартфоны сейчас уже быстрые. Как что то на Расбери компилировать, так можно, не смотря что по сравнению со смартфоном по производительности он просто вонючка.

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

>> будет облачной.

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


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноньимъ , 27-Дек-23 00:41 
Фигня с производительностью не от динамической типизации там от слова совсем.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 27-Дек-23 02:51 
> Фигня с производительностью не от динамической типизации там от слова совсем.

От чего же?


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено _kp , 27-Дек-23 10:55 
> Фигня с производительностью не от динамической типизации

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

В тех же Java и C#, код без дергатни памяти, то есть в критичных местах, получается очень быстрый без плясок с бубнамм, хотя там и нативного кода в полноценном смысле вовсе нет. И вполне логично подумать именно на типизацию в Питоне.



"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноньимъ , 27-Дек-23 16:51 
Ну вот и думают.
Аннотацию типов добавили уже давно. Очень удобно. Осталось оптимизацию кода сделать который тайпчекается.

И я не в курсе что там у них с автовыводом типов.

В Ракете прикольно сделали типизированную версию.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено ИмяХ , 26-Дек-23 15:41 
То есть питон сейчас стал в 100 раз быстрее?

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 16:00 
В 100 раз быстрее jit генерация байткда, само исполнение стало быстрее на десятки процентов в лучшем случае.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено _kp , 26-Дек-23 18:18 
> То есть питон сейчас стал в 100 раз быстрее?

Нет, его отдельные операции стали быстрее, а в целом скорость примерно как была.
Ведь если похерить хотя бы динамическую типизацию, что сильно ускорит, но так тогда это и будет уже Питон.



"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 18:33 
Сделать транслятор типа TypePython с подсказками о типах для AST.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 27-Дек-23 18:49 
Mypyc

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 15:45 
> и анонс написан в стихах

а маска на презентации скучная не кожаная


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено YetAnotherOnanym , 26-Дек-23 17:43 
> примечателен очень высокой скоростью генерации кода

В питоне быстрая генерация кода - это самое главное. Те, кому надо, чтобы код быстро работал, обходят питон стороной.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 20:25 
... и направляются прямиком к Cython.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 23:09 
Реально кстати, у cython производительность 1 в 1 с си, при этом, оно выглядит как питон, и прозрачно интегрируется с питоном.

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено YetAnotherOnanym , 27-Дек-23 13:00 
cython.org:
> The Cython language is a superset of the Python language that additionally supports calling C functions and declaring C types on variables and class attributes

Так это си знать надо.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 21:48 
> Те, кому надо, чтобы код быстро работал, обходят питон стороной

только ты об этом ничего не знаешь, так как не имеешь отношения ни тем, ни к другим


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 26-Дек-23 21:48 
>Реализация JIT требует в качестве зависимости LLVM на этапе сборки

Оригинальный интерпретатор CPython, в том числе, тем и хорош, что никак не связан с LLVM и полностью автономный.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 27-Дек-23 00:29 
Кто прояснит — этот copy and patch чем-то отличается от AOT компиляции или это совсем что-то другое и я не в ту степь?

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 27-Дек-23 01:02 
Блин, как я сюда попал сборище каких то диванные критиков, у python минус такой минус сякой да он и медленный и проще сделать так да сяк .... :DD  ну елы палы что за сборище ламеров, которые повторяют пойнты, которые были актуальны наверное в 90х для python 2, и нулевых ... просто рука лицо почти с каждого сообщения

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 27-Дек-23 02:52 
> Блин, как я сюда попал сборище каких то диванные критиков, у python
> минус такой минус сякой да он и медленный и проще сделать
> так да сяк .... :DD  ну елы палы что за
> сборище ламеров, которые повторяют пойнты, которые были актуальны наверное в 90х
> для python 2, и нулевых ... просто рука лицо почти с
> каждого сообщения

Потому что ничего не меняется сильно по скорости и потреблению памяти.


"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 27-Дек-23 02:59 
Фото на гитхабе у него забавное

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 27-Дек-23 10:36 
Как оно будет работать при "monkey patching"?

"Для Python предложен JIT-компилятор, использующий технику co..."
Отправлено Аноним , 31-Дек-23 15:50 
JIT - дыра в безопасности которую M$ хотят вкорячить в питон.

JIT  на безопасных платформах работать не будет никогда.

JIT - зло которое надо искоренять!