Size: a a a

2020 October 13

I

IdiocyAcceptance in F# Chat
а генерит много фанков
источник

I

IdiocyAcceptance in F# Chat
у тебя пример ещё сложнее
источник

VA

Vagif Abilov in F# Chat
IdiocyAcceptance
Очень много на самом деле
Да, я понимаю, что в общем случае черт ногу сломит. Но, например, в Akka Streams рантайм иногда ухитряется схлопывать различные стадии в одну.
источник

I

IdiocyAcceptance in F# Chat
Ну в C# тоже куча оптимизацией для IEnumerable, типа комбинированных WhereSelect итераторов и так далее
источник

I

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

I

IdiocyAcceptance in F# Chat
Вот на самом деле printfn если взять - вроде как все типы известны в компайл тайме, можно же сгенеритиь сразу супер эффективную функцию
источник

I

IdiocyAcceptance in F# Chat
Но ведь нет, работает медленее string.format, который боксит, да ещё и выделяет больше гораздо
источник

VA

Vagif Abilov in F# Chat
IdiocyAcceptance
Ну в C# тоже куча оптимизацией для IEnumerable, типа комбинированных WhereSelect итераторов и так далее
Ну вот чувствуется это, что никто не занят тем, что крутит компилятор. Постоянно вижу, как в твиттере разные люди рапортуют о выигранных микросекундах в оптимизациях выражений в сшарпе
источник

I

IdiocyAcceptance in F# Chat
В плане компиляторных оптимизаций в F#-пе ещё много простора
источник

I

IdiocyAcceptance in F# Chat
Vagif Abilov
Ну вот чувствуется это, что никто не занят тем, что крутит компилятор. Постоянно вижу, как в твиттере разные люди рапортуют о выигранных микросекундах в оптимизациях выражений в сшарпе
Угу, так и есть
источник

g

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

I

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

MS

Mark Shevchenko in F# Chat
Vagif Abilov
Это понятно, но много ли ума нужно оптимизатору, чтобы заменть
[1; 2; 3] |> Seq.map (fun x -> x + 1) |> Seq.map (fun x -> x + 2)
на
[1; 2; 3] |> Seq.map (fun x -> (+) 1 |> (+) 2)
Справедливости ради, это другая задача. В твоём примере итерация по массиву будет одна, не две.
источник

I

IdiocyAcceptance in F# Chat
джит не сможет за считанные секунды понять что FSharpFunc(FSharpFunc(x, 1, 2)) -> это x + 1 + 2
источник

VK

Vladislav Khapin in F# Chat
gsomix
Я бы предпочел меньше оптимизаций в компиляторе, но больше в JIT.
У нас так в другом чате начинается платиновый срач за то что все ручные тайпчеки в линке можно переписать на тайпклассы
источник

I

IdiocyAcceptance in F# Chat
Он не умеет так для делегатов, т.к. не умеет их инлайнить, а для кастомных классов тем более. По этому любая стадия хорошей оптимизации (в .Net) начинается с очень чистого и короткого IL'а
источник

VA

Vagif Abilov in F# Chat
Mark Shevchenko
Справедливости ради, это другая задача. В твоём примере итерация по массиву будет одна, не две.
Да, я это тезисно 😊
источник

g

gsomix in F# Chat
IdiocyAcceptance
ну так тоже нереально, ты максимум оптимизаций всегда выжмешь если у тебя куча времени
Максимум оптимизаций можно выжать при whole-program optimization и мономорфизации.
источник

I

IdiocyAcceptance in F# Chat
gsomix
Максимум оптимизаций можно выжать при whole-program optimization и мономорфизации.
это куча времени -)
источник

VK

Vladislav Khapin in F# Chat
можно не надо пожалуйста
источник