Size: a a a

2020 October 21

I

Igor in F# Chat
прикольная штука, хорошо бы оно еще со спанами работало
источник

I

IdiocyAcceptance in F# Chat
Igor
прикольная штука, хорошо бы оно еще со спанами работало
Ну как форма записи удобно, да. Но реализация сравнения - пиздец
источник

I

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

I

Igor in F# Chat
я вот кстати давно это знаю (что он быстро работает), только не знаю почему
источник

I

IdiocyAcceptance in F# Chat
Igor
switch быстро работает, и мне кажется это будет гораздо быстрее, чем каждое значение целиком проверять
Целиком никто не проверяет. Не знаю, сможет ли jit понять что там тупое сравнение памяти или нет, но это будет работать намного медленнее, чем memcmp
источник

I

IdiocyAcceptance in F# Chat
И его дотнет реализации
источник

I

IdiocyAcceptance in F# Chat
Не, там простыня
источник

I

IdiocyAcceptance in F# Chat
В идеале компилятор должен выделить статик массивы и вызывать супер быстрые сравнения через либо Span.SequenceEquals, либо через аналог в Buffer
источник

I

Igor in F# Chat
погоди, если у меня там 40 значений, мне придется 40 раз вызвать memcmp?
источник

I

IdiocyAcceptance in F# Chat
Да, очевидно
источник

I

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

I

IdiocyAcceptance in F# Chat
И используй AsSpan().SequenceEqual
источник

I

IdiocyAcceptance in F# Chat
Разница будет :)
источник

I

IdiocyAcceptance in F# Chat
И гоняй бенчмарки
источник

I

Igor in F# Chat
да я на строках оставлю, это количество лишнего кода мне нафиг не нужно
источник

I

Igor in F# Chat
тем более в этом нет никакого экономического смысла
источник

I

IdiocyAcceptance in F# Chat
Ну если у тебя приложуха не страдает, то ок)
источник

VS

Vladimir Shchur in F# Chat
Vasily Shapenko
Но я бы () убрал
а я бы не убирал) потому что где-то есть параметр, где-то нету, единообразие лучше читается
источник

I

Igor in F# Chat
IdiocyAcceptance
И используй AsSpan().SequenceEqual
я почитал, пишут что выгода начинается с длины 8 https://github.com/dotnet/runtime/issues/32363.
Наверное в каких-то сценариях выиграет, но весь этот код придется написать руками. Лучше оставить понятный код
источник

VS

Vladimir Shchur in F# Chat
а есть дока что делает B? а то лень гуглить)
источник