Hog
Ayrat
вроде так было
руки дошли
| Method | MessageCount | Mean | Error | StdDev | Median | Gen 0 | Gen 1 | Gen 2 | Allocated |
|----------------- |------------- |-----------:|------------:|-----------:|-----------:|-------:|-------:|------:|----------:|
| HopacEventStream | 10000 | 3.609 ms | 7.1450 ms | 2.5480 ms | 2.754 ms | 1.9531 | 1.9531 | - | 1.86 MB |
| ExpMulticast | 10000 | 1.658 ms | 0.6564 ms | 0.2341 ms | 1.737 ms | - | - | - | 1.17 MB |
| HopacEventLock | 10000 | 1.359 ms | 0.5632 ms | 0.2009 ms | 1.413 ms | - | - | - | 1.52 MB |
| HopacEventStream | 100000 | 37.984 ms | 75.0276 ms | 26.7556 ms | 32.420 ms | - | - | - | 16.44 MB |
| ExpMulticast | 100000 | 15.793 ms | 10.1866 ms | 3.6326 ms | 16.192 ms | - | - | - | 10.78 MB |
| HopacEventLock | 100000 | 16.372 ms | 17.2010 ms | 6.1340 ms | 14.207 ms | - | - | - | 10.19 MB |
| HopacEventStream | 1000000 | 188.210 ms | 111.0011 ms | 39.5841 ms | 186.336 ms | - | - | - | 254.45 MB |
| ExpMulticast | 1000000 | 139.856 ms | 55.9584 ms | 19.9553 ms | 138.022 ms | - | - | - | 102.8 MB |
| HopacEventLock | 1000000 | 193.142 ms | 266.1378 ms | 94.9073 ms | 165.277 ms | - | - | - | 97.55 MB |
Vladislav
Ayrat
а кот можешь закинуть?
module Exp =
open Hopac.Experimental
type MulticastPub<'T>() =
let mch = Multicast.create() |> run
member _.Pub(value: 'T) =
Multicast.multicast mch value
|> queue
member _.Sub(fn: 'T -> unit) =
Multicast.port mch
>>= (fun mport ->
Job.iterateServer mport (fun x ->
Multicast.recv x >>- fn >>-. x
)
)
Ayrat
но сам мультикаст твикнутый, там инкаминг ченел на мейлбокс заменил
Ayrat
type MChan<'a> = {
ReqMb: Mailbox<Req<'a>>
RepCh: Ch<MPort<'a>>
}
Ayrat
вот от этого изменения надо сделать пару ченжей в коде мультикаста
Ayrat
и все работает.
Vladislav
а у тебя еще HopacEventStream другой какой-то
Vladislav
вроде
Ayrat
мне понравилась идея подписки
делается IVar() на заполнение которого вешаются все подписчики
как только приходит Pub, мы заполняем старый IVar (и разблокируем подписчиков) и создаем новый, который рассылаем подписчкам чтобы они знали куда переподписаться
Ayrat
Stas
Ayrat
Vladislav
1000000 | 193.142 ms | 266.1378 ms
кекнул с ошибки с локом
Vladislav
Ayrat
Hog
Ну, зато теперь у нас есть шведские или ещё какие финские перфораторы и болгарки!
Vasily
Жидкие гвозди
Hog
Я настолько пристально ассортимент не изучал!
Анна
Анна
аааа!
Анна
активно нанимает на F#?
Hog
Не думаю, но как пример успешного ф#-фуллстека оч даже ничего!
Крылатый
Vasily
fable
Hog
Hog
Можно и во фронт и в бэк и во все дыры
Hog
Типа билд на фейке
Hog
Йеп
Hog
Крылатый
Крылатый
Hog
Каков вопрос - таков ответ!
Vladislav
https://danluu.com/branch-prediction/
Vladislav
Больше этот файл нравится
Ilya
Shub
наш чятик куда-то протекает
Shub
Так Айрат только топит за фарш, а пишет на других языках
Shub
иногда мне кажется, что так делают все кто топит за фарш
Shub
кроме того, Айрат, оказывается, объект какого-то тайного культа
Anonymous
звезда дотнет чата
Shub
не удивлюсь, если у них где-то в шкафу стоит картонная коробка с газетными вырезками, неуклюжими карандашными рисунками и оторванными кукольными головами
Anonymous
скоро стикеры подвезут
Ayrat
Mikhαil
Vasily
Айрат бабай
Vladislav
Друзья, существует траспайлер из C# в Pascal?
Hog
Vladimir
кстати не так и маловероятно что можно сделать) из шарпа в вижул бейсик, оттуда в обычный бейсик, а оттуда в паскаль)
Mikhαil
Mark
Я полез в гугол проверить, и нашёл.
https://www.gtsoftware.com/products/netcobol/netcobol-for-net/
Mark
Оказывается, даже COBOL под .NET есть.
Mark
OCaml не хватает!
Mark
Хотя, постойте-постойте :)
Romɑn
Nikolay
Мне кажется, или меня где-то тут кто-то звал? 🤔
Romɑn
https://hackage.haskell.org/package/hs-dotnet
Doge
Mark
народ, рассказываю сейлзу про то почему F# збс, вот пока что все что я вспомнил, может дополните:
1. прагматичность - легко менять парадигму, стиль проргаммирования в зависимости от ситуации
2. хороший анализ кода, который не позволяет "выстрелить в ногу"
3. чистый код - без мусора, хорошо читаемый
4. интеграция с .NET , с другими языками на .NET, можно переиспользовать библиотеки из других языков
5. автоматически вычисляемые типы - то есть компилятор сам за тебя вычислит типы, если это возможно.
6. Более строгое структурирование кода, чем в c#
Vasily
Более строгое структурирование кода, чем в c#
Mark
точно, это тоже киллер фича
Vasily
И кода в разы меньше
Vasily
У меня в проекте примерно на порядок
Mark
(это в 3 пункт входит)
Vasily
Меньше кода - меньше багов
Mark
можешь обьективно оценить, сколько было бы кода на c#?
Vasily
порядка 1кк строк
Mark
а сейчас 70к
Vladimir
https://www.slideshare.net/Odin_cool/why-f - я презентацию делал 2 года назад)