Size: a a a

Compiler Development

2020 March 10

B

Bonart in Compiler Development
JIT не очень настропалился - ручной цикл в разы быстрее
источник

B

Bonart in Compiler Development
Александр Вольнов
Я просто хочу сделать свой язык, где пользователь может что угодно нагородить через map/reduce/filter и подобные штуки, и хочу, чтобы он получил максимальную производительность. Соответственно, я не могу контролировать, что именно пользователь напишет, для моей программы это всё находится в рантайме.
Значит тебе LINQ Optimizer ковырять. Там кондовая такая функциональщина
источник

FO

FORTRAN ONE LOVE in Compiler Development
Bonart
Автора просьба не обсуждать
А что с автором не так?
источник

B

Bonart in Compiler Development
FORTRAN ONE LOVE
А что с автором не так?
Все обсуждение начинает вестись вокруг него/нее
источник

АВ

Александр Вольнов in Compiler Development
Bonart
Значит тебе LINQ Optimizer ковырять. Там кондовая такая функциональщина
Я наверное не буду с дотнетом связываться. Просто было интересно глянуть, что бывает. Для начала напишу на C++ с виртуальными функциями (у меня уже есть свои полиморфные ranges), потом, когда дойдёт до оптимизации может какой-нибудь JIT сразу в нативный код прикручу.
источник

А

Андрей in Compiler Development
Александр Вольнов
Я наверное не буду с дотнетом связываться. Просто было интересно глянуть, что бывает. Для начала напишу на C++ с виртуальными функциями (у меня уже есть свои полиморфные ranges), потом, когда дойдёт до оптимизации может какой-нибудь JIT сразу в нативный код прикручу.
это ты свой stl пишешь?
источник

B

Bonart in Compiler Development
Александр Вольнов
Я наверное не буду с дотнетом связываться. Просто было интересно глянуть, что бывает. Для начала напишу на C++ с виртуальными функциями (у меня уже есть свои полиморфные ranges), потом, когда дойдёт до оптимизации может какой-нибудь JIT сразу в нативный код прикручу.
Ну смотри. Темплейты в сишечке конечно гуд, но в рантайме лучше дотнета вряд ли найдешь
источник

МБ

Михаил Бахтерев in Compiler Development
Александр Вольнов
Я просто хочу сделать свой язык, где пользователь может что угодно нагородить через map/reduce/filter и подобные штуки, и хочу, чтобы он получил максимальную производительность. Соответственно, я не могу контролировать, что именно пользователь напишет, для моей программы это всё находится в рантайме.
Посмотрите на трансдьюсеры Clojure и оптимизации deforestation и fusion в Haskell. Техники эти стандартные
источник

ЗП

Зигохистоморфный Препроморфизм in Compiler Development
Михаил Бахтерев
Посмотрите на трансдьюсеры Clojure и оптимизации deforestation и fusion в Haskell. Техники эти стандартные
Вот трансдьюсеры в кложе как третье колесо, все на заказ, все потому, что Хикки не может в математику
источник

МБ

Михаил Бахтерев in Compiler Development
Зигохистоморфный Препроморфизм
Вот трансдьюсеры в кложе как третье колесо, все на заказ, все потому, что Хикки не может в математику
Почему колесо третье, если они неплохо работают именно так, как спрашивали? Операционная и денотационная семантика для них легко строится, поэтому не понятно, какие проблемы тут могут быть с математикой.
источник

АВ

Александр Вольнов in Compiler Development
Андрей
это ты свой stl пишешь?
STL уже есть, ещё один такой не нужен. Я пишу Intra и скоро буду делать DataVoln.
источник

АВ

Александр Вольнов in Compiler Development
Bonart
Ну смотри. Темплейты в сишечке конечно гуд, но в рантайме лучше дотнета вряд ли найдешь
В любом случае, сделать самому без посредников типа CLR можно оптимальнее, так как контроля больше. Придётся конечно повозиться с кодогенерацией под разные архитектуры. Зато будет лёгкий рантайм, который можно запускать на любой платформе, не таская тяжёлый дотнет. Даже под WebAssembly собрать. Правда я пока не знаю, можно ли там будет JIT организовать.
источник

M

MaxGraey in Compiler Development
Александр Вольнов
В любом случае, сделать самому без посредников типа CLR можно оптимальнее, так как контроля больше. Придётся конечно повозиться с кодогенерацией под разные архитектуры. Зато будет лёгкий рантайм, который можно запускать на любой платформе, не таская тяжёлый дотнет. Даже под WebAssembly собрать. Правда я пока не знаю, можно ли там будет JIT организовать.
Нет, там только AOT (в WebAssembly)
источник

АВ

Александр Вольнов in Compiler Development
MaxGraey
Нет, там только AOT (в WebAssembly)
Там - это в WebAssembly? Под x86/ARM можно заморочиться с генерацией машинного кода самому, а под wasm значит нет вариантов?
источник

M

MaxGraey in Compiler Development
> Там - это в WebAssembly?
Да
источник

АВ

Александр Вольнов in Compiler Development
В браузере можно цикл на JS сгенерировать по идее и передать ему нужный кусок ArrayBuffer на обработку.
источник

p

polunin.ai in Compiler Development
Александр Вольнов
Я просто хочу сделать свой язык, где пользователь может что угодно нагородить через map/reduce/filter и подобные штуки, и хочу, чтобы он получил максимальную производительность. Соответственно, я не могу контролировать, что именно пользователь напишет, для моей программы это всё находится в рантайме.
Оптимизация функциональных штук это вообще гиблая тема. Придумывает кучу эвристик, и при этом они не всегда работают. Рекомендую оставить это гиблое дело)
источник

МБ

Михаил Бахтерев in Compiler Development
polunin.ai
Оптимизация функциональных штук это вообще гиблая тема. Придумывает кучу эвристик, и при этом они не всегда работают. Рекомендую оставить это гиблое дело)
Почему?
источник

А

Алексей in Compiler Development
polunin.ai
Оптимизация функциональных штук это вообще гиблая тема. Придумывает кучу эвристик, и при этом они не всегда работают. Рекомендую оставить это гиблое дело)
а оптимизация императивных штук сильно лучше чтоли?
источник

AR

Andrew Rudenko in Compiler Development
Александр Вольнов
Там - это в WebAssembly? Под x86/ARM можно заморочиться с генерацией машинного кода самому, а под wasm значит нет вариантов?
ну в смысле нет? wasm это набор инструкций, конечно, их можно генерить динамически. есть разные окружения для запуска: интерпретатор wasmtime, генератор машинного кода из wasm cranelift, JS API в браузере — для любого из них можно включить динамическую генерацию wasm-модулей
источник