Vasiliy
[<Literal>] let Conn = "Server=192.168.1.89; Port=5432; Database=test1;User Id=postgres;Password=postgres;" type Base = SqlDataProvider<DatabaseVendor = Common.DatabaseProviderTypes.POSTGRESQL, ConnectionString = Conn, UseOptionTypes = true>
у меня вот такое( The type provider 'FSharp.Data.Sql.SqlTypeProvider' reported an error: Could not create the connection, most likely this means that the connectionString is wrong. See error from Npgsql to troubleshoot: Could not load file or assembly 'System.Threading.Channels, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The system cannot find the file specified. fsproj вот такой <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.1</TargetFramework> </PropertyGroup> <ItemGroup> <Compile Include="Program.fs" /> </ItemGroup> <ItemGroup> <PackageReference Include="Npgsql" Version="5.0.1.1" /> <PackageReference Include="SQLProvider" Version="1.1.99" /> </ItemGroup> </Project>
Mark
УХ ТЫ Ж БЛЯТЬ, там много переписать придется
не поленись простенький бенчмарк для linq накатать, резалты запомнишь на всю жизнь скорее всего ну и сюда скинешь :)
Ilya
не употребляю!
Даблы в хешсетах?
Vasiliy
🤔 хм, щас попробую
Anonymous
чтоб линкью переписать надо прям волевое усилие над собой совершить
Anonymous
Даблы в хешсетах?
не, кастомные структуры, я ж выше написал. геоточка.
Anonymous
struct GeoPoint(double lat, double lon)
Doge
, хешкод даблов - лови наркомана!
Там координаты - скорее всего хэш считается с какой-то максимальной точностью, а-ля учитываем только столько-то знаков после запятой.
Ilya
не, кастомные структуры, я ж выше написал. геоточка.
Но ты сказал, что там хешкод есть, код покажи его!
Igor
🤔 хм, щас попробую
кажется вспомнил, в 3.1 нужно было npqsql версию поменьше взять
Anonymous
Но ты сказал, что там хешкод есть, код покажи его!
Он в нугет куда-то вшит, уже завтра, меня ебет снова комп включать, на моем ноуте нет ВПН
Ilya
Шесть знаков по-моему
Дак у тебя раунд весь перф жрет в хешкоде
Anonymous
Дак у тебя раунд весь перф жрет в хешкоде
а хули я тогда не вижу этого в профайлере?
Ilya
а хули я тогда не вижу этого в профайлере?
Ты же сказал, что contains тормозит
Igor
Во, ты какую для 5 версии npqsql брал?
для 5 такие же как у тебя, специально вот только обновил перед проверкой
Ilya
Там тормозить может хешкод или его коллизии
Ilya
Или у тебя там concurrent collection?
Anonymous
Ты же сказал, что contains тормозит
тормозит, это громко сказано. я сказал, что я его вижу, что он кушает CPU, но пока не похоже, чтобы это было как-то сверх меры. там объективно на каждой итерации куча обращений к сэтам и проверок на вхождение.
Anonymous
т.е. это природа алгоритма
Anonymous
но я могу перероверить хеширование завтра, в принципе хорошая идея
Anonymous
чуйка подсказывает мне, что там будет че-нить типа this.Lat.GetHC() ^ this.Lon.GetHC()
Doge
тормозит, это громко сказано. я сказал, что я его вижу, что он кушает CPU, но пока не похоже, чтобы это было как-то сверх меры. там объективно на каждой итерации куча обращений к сэтам и проверок на вхождение.
Вообще как раз хэшсеты - не самое дешевое удовольствие, если говорить про CPU-bound задачи, на удивление много жрут. Из вариантов тут - смотреть на более эффективные хэши или на более эффективные варианты сетов, где это возможно. Те же битсеты, где их можно применить, могут быть буквально на порядки эффективнее.
Anonymous
Я думаю, там раунд и конверт в инт
Очень сомневаюсь, это же не Париматч
Ilya
Anonymous
А причем тут париматч?🤔
Ну это там такие странные вещи люди вытворяют
Anonymous
а то как-то несуразно выйдет
Doge
Да если уже битсеты пользовать, то тогда и Линк переписать первым делом надо
Битсеты надо смотреть ещё хорошо ли подойдут. Они свой оверхед по памяти дают ощутимый. Их топово использовать там, где последовательно с 0 идущие ключи и их количество практически всегда ограничено сверху небольшим числом.
Anonymous
not my case
Vladimir
Да если уже битсеты пользовать, то тогда и Линк переписать первым делом надо
я вот в пульсаре активно битсеты юзаю, но они в дотнете очень бедные по функционалу
Doge
Ну да, о чём и речь.
Vladimir
да, именно это я и встречал) и в дотнете всего пару решений есть с репами по пару звезд, типа EWAH и RoaringBitmap
Vladimir
не хватает байтоебов(
Doge
Ну битсеты легко в любом случае писать. У меня на расте тоже рукописная реализация, под мои нужды.
Ayrat
Есть занятное определение хайлоада - все что для вашей инфраструктуры является критической нагрузкой - хайлоад. Потому что иначе неясны критерии хайлоадности.
Ayrat
Не говорю что это верно, просто определение
Ayrat
Ой го во флудильню
Ayrat
Чот я чаты попутал
Ayrat
AT
Ayrat
Ну я другое сформулировал-если больше 1М онлайн, либо требуется soft real time, либо 100К запросов в секунду на инфру-это все хайлоад.
Doge
Оно всё равно выходит ощутимо проще практически всей остальной векторизации, кроме совсем тривиальной.
Doge
Сама логика-то достаточно прозрачная
Ayrat
Так что попугаи в секунду вообще ни о чем метрика
Ayrat
Там могут быть: - пустые хеловорды в секунду - тяжёлые транзакции с 40 хопами на беке на каждый попугай в секунду
Ayrat
Да он разный.
Ayrat
Ой всё
Doge
А ещё есть всякие хитрые ETL джобы с ограничением на время работы и нехилыми объёмами обрабатываемой фигни.
Doge
Которые тоже вполне себе хайлоад
Ayrat
Там дай бог 1 в день
Ayrat
Но при этом петабайты в наносек инфы
Doge
Или всякие прям вычислительные и CPU-bound штуки, как та, что выше обсуждалась.
Ayrat
И там тот ещё хайлоад кстати
Ayrat
Но я вижу профдеформацию на фоне ХФТ у AT
Doge
Что такое хфт?
High frequency trading
Ayrat
Что такое хфт?
Хай фрик трединг!
Ayrat
Торговля высокими фриками
Igor
High frequency trading
Ocaml что ли?
Ayrat
Ocaml что ли?
Однопоточный окамл без структур в хфт? Чот сомневаюсь
Igor
Ocaml что ли?
ценные бумаги быстро продают и покупают
Igor
Ну дык, надо брать пример с лучших
Doge
Ocaml что ли?
Там у разных компаний много чего разного юзается, насколько я слышал.
Ayrat
Да я чо, я сходу поверю
Ayrat
Люди вон дум на тесте для беременных запускали
Ilya
Ты просто неправильно на плюсах пишешь.
Doge
Ты просто неправильно на плюсах пишешь.
Правильно на плюсах писать тоже не очень приятно.
Mark
Мап редюс написан на с++ если что
Да, это неудачно аргументировал. Но идея всё равно верная!
Mark
В главном да!