Size: a a a

2021 January 05

I

IdiocyAcceptance in F# Chat
Это пример кода, где ожидается что кодген будет без аллокаций FSharpFunc, но они, к сожалению, есть.
источник

I

IdiocyAcceptance in F# Chat
Я помню что обещал скинуть неоптимизированный пример такого кода
источник

I

IdiocyAcceptance in F# Chat
И происходит такое именно из-за авто каррирования. То есть компилятор вместо того, чтобы пользоваться условными Func<string, string, bool> (так как каррирования по сути нет), компилятор фигачит FSharpFunc<string, FSharpFunc<string, bool>> и пуляет их через new()
источник

I

IdiocyAcceptance in F# Chat
То есть даже при попытках оптимизировать функции через дополнительный стейт, в итоге получаешь аллокацию FSharpFunc, как ни крути
источник

g

gsomix in F# Chat
IdiocyAcceptance
Что-то потерял @gsomix
Я тут.
источник

I

IdiocyAcceptance in F# Chat
Окей, просто почему-то не выводился твой ник в автоподборе
источник

g

gsomix in F# Chat
IdiocyAcceptance
И происходит такое именно из-за авто каррирования. То есть компилятор вместо того, чтобы пользоваться условными Func<string, string, bool> (так как каррирования по сути нет), компилятор фигачит FSharpFunc<string, FSharpFunc<string, bool>> и пуляет их через new()
Но в твоем примере компилятор все оптимизировал. 🤔
источник

I

IdiocyAcceptance in F# Chat
Нет, там создание FSharpFunc
источник

I

IdiocyAcceptance in F# Chat
Хотя нигде нет замыканий
источник

g

gsomix in F# Chat
IdiocyAcceptance
Нет, там создание FSharpFunc
Это другая проблема, разве нет?
источник

g

gsomix in F# Chat
Не имеющая отношения к каррированию.
источник

I

IdiocyAcceptance in F# Chat
Ну, прямой фанк выполнится быстрее просто
источник

I

IdiocyAcceptance in F# Chat
Плюс аллокации
источник

g

gsomix in F# Chat
Делегаты же тоже аллоцируются?
источник

g

gsomix in F# Chat
IdiocyAcceptance
Ну, прямой фанк выполнится быстрее просто
Это нужно проверить.
источник

I

IdiocyAcceptance in F# Chat
gsomix
Это нужно проверить.
Я раньше проверял похожий код, фанки работали быстрее чем такие оптимизации каррированных функций
источник

I

IdiocyAcceptance in F# Chat
Не думаю что что изменилось
источник

g

gsomix in F# Chat
IdiocyAcceptance
Я раньше проверял похожий код, фанки работали быстрее чем такие оптимизации каррированных функций
Показывай.
источник
2021 January 06

I

IdiocyAcceptance in F# Chat
Надо бенчик делать снова, позже тогда)
источник

g

gsomix in F# Chat
Допускаю возможность того, что JIT хорошо работает с делегатами.
источник