Hog
ну, всё равно ишшую надо завести. хотя бы в документации где-то указать - ТАК НЕ ДЕЛАТЬ
Hog
а если заместо цикла маленькую рек фцию написать - оно починит аллокации?
Hog
да - починило конечно
Hog
| While | 10000 | 452.55 us | 3.256 us | 2.719 us | 1.00 | 155.2734 | - | - | 651417 B | | Rec | 10000 | 43.12 us | 0.856 us | 0.985 us | 0.09 | 0.1831 | - | - | 968 B |
Vasily
просто бедный гц будет пердеть как не в себя
На мобилках лучше без этого вот
Vasily
Вот рекурсия ок судя по всему
Hog
На мобилках лучше без этого вот
там элементарно на рек фцию поменять и ничего такого не будет
Vasily
Подозреваю, что косяк там в реализации while
Vasily
Надо будет у себя в паре мест на рекурсию переделать
Hog
На мобилках лучше без этого вот
зато наверное руки телефоном можно греть :)
Ayrat
Да
Так и чо? Таск билдер норм или не норм?
Hog
Уже нельзя
почему?
Ayrat
почему?
Пачинил он!
Hog
ифончик прям иногда оч нагревается
Hog
он про своё
Ayrat
Да
Hog
я думал - в принципе нельзя
Hog
Так и чо? Таск билдер норм или не норм?
Владика только за смертью посылать :)
Vladislav
Так и чо? Таск билдер норм или не норм?
я или позже или сутра смогу
Vladislav
но оно все есть
Hog
Так и чо? Таск билдер норм или не норм?
тоже аллоцирует, но меньше
Shub
я или позже или сутра смогу
Сутра помоста Шестого Патриарха?
Shub
Офигеть открытия конечно. Ф# - заговор микрософта для отъема денег путем перерасхода облачных ресурсов
Vladimir
тоже аллоцирует, но меньше
всегда говорил что асинки не нужны)
Vasily
Асинки починят в пятой версии
Vasily
Надеюсь
Ilya
ф# не нужен (tm)
Я вам уже полгода это говорю! На C# лучше.
Vladimir
Асинки починят в пятой версии
путем добавления нативного таскбилдера?
Vasily
Путем переписывания стейт машины
Hog
там же всё по-новому будет под капотом
Vladimir
сча найду бенч от дона
Hog
Hog
@omgszer ^^^
Vasily
Кароч,rec лучший
Vasily
Я всегда это знал
Vladimir
а код? что-то он слишком лучший)
Hog
member this.Rec () = async { let mutable i = 0 let rec while' () = if i = this.Length then i else i <- i + 1 while' () return while' () } |> Async.RunSynchronously
Hog
member this.WhileAsync() = async { let mutable i = 0 while i < this.Length do i <- i + 1 return i } |> Async.RunSynchronously
Hog
member this.WhileTask () = (task { let mutable i = 0 while i < this.Length do i <- i + 1 return i }).Result
Vladimir
да, нечего возразить)
Vladimir
разве что такой бенч довольно бессмысленен) так как должен же быть какой-то асинхронный вызов иначе зачем это все
Hog
он не бесмысленный
Hog
он аллокации внутри цикла измеряет
Hog
наверное :)
Vladimir
интересно как он прожует асинхронный вызов внутри while'
Hog
rec while' - это замена магии async { while }
Hog
как раз в этом и ссуть
Vladimir
я искал практическое применение)
Vladislav
проблема что паттерн с while известный
Hog
я искал практическое применение)
практическое применение - уменьшение нагрузки на ГЦ
Vladimir
я искал практическое применение)
кажется понял какое практическое применение - например внутри мейлбокса, там нет выбора
Hog
Василий же сказал - мобилкам плохо от этого
Vladimir
сча найду бенч от дона
вот тут, он бенчи приводил https://github.com/dotnet/fsharp/pull/6811
Hog
чот не очень
Hog
при беглом просомтре
Vladimir
ну почему не очень, новый таск будет быстрее таскбилдера, в некоторых тестах даже обгонять сишарп!
Hog
нуок
Vladislav
'nj
Vladislav
это обычный цикл while на f#
Vladislav
и то что он преврашается в ебанину из колбеков это не ок
Hog
ладно - как-то так https://gist.github.com/grishace/83f540cb299867e94145551931fcbcb1
Hog
это обычный цикл while на f#
ну, внутри CE оно ж не всё "обычное"
Hog
я, например, не знал про while до сегодняшнего утра
Vladislav
дайте я напишу завтра
Диёр
у меня внезапно умер синкпад походу проблема с тем что он как-то сильно засыпал и просыпался только после танца с бубном была не софтварная
Vladislav
зачем шарить
Vladislav
просто в репу напишу
Vladimir
зачем шарить
привлечь внимание общественности)
Vladislav
ну