@Fsharp_chat

Страница 276 из 772
Aleksander
21.08.2017
11:55:03
<PropertyGroup> <ServerGarbageCollection>true</ServerGarbageCollection> </PropertyGroup>

как-то так

Vladimir
21.08.2017
11:55:12
спасибо)

попробую

Google
Ilya
21.08.2017
11:55:39
Почему забоксятся, не совсем понял?
потому что json.net так работает

Vladimir
21.08.2017
11:56:19
я сейчас через ServiceStack сериализую

Ilya
21.08.2017
11:56:26
и любой generic сериализатор

Vladimir
21.08.2017
11:56:42
ну вот)

Ilya
21.08.2017
11:56:54
там где-то внутрях должен быть каст к object

Vladimir
21.08.2017
11:57:38
items |> Seq.tryHead ... Не?
Это в любом случае будет медленней гораздо чем items.[10]

Evgeniy
21.08.2017
11:59:28
нет нормального сравнения с null
Я все равно не понял, что это значит. :)

Vladimir
21.08.2017
12:00:38
let oldEntity = collection.[id] match box oldEntity with | null -> setStatusCode 404 next httpContext | _ ->

вот так сейчас приходится писать

Aleksander
21.08.2017
12:01:24
https://docs.microsoft.com/en-us/dotnet/api/system.runtime.gclatencymode?view=netframework-4.7

может LowLatency поможет)

Vladimir
21.08.2017
12:03:21
не работает isNull на рекордах

Google
Vladimir
21.08.2017
12:03:35
они потому как бы не могут быть Null =)

Artemy
21.08.2017
12:03:57
:c

Nikolay
21.08.2017
12:04:12
Vladimir
21.08.2017
12:04:19
ага

Nikolay
21.08.2017
12:04:31
Тогда юзай Option :)

Vasily
21.08.2017
12:04:36
вот так сейчас приходится писать
Заполняй массив по умолчанию NOne

Nikolay
21.08.2017
12:04:36
Оверхед не должен быть сильным

Vladimir
21.08.2017
12:04:52
может LowLatency поможет)
сча попробую сначала server gc

Evgeniy
21.08.2017
12:04:53
они потому как бы не могут быть Null =)
Почему тогда не option, или Nullable<T>?

Nikolay
21.08.2017
12:05:00
Оверхед не должен быть сильным
По крайне мере не больше, чем box

Vladimir
21.08.2017
12:06:15
Почему тогда не option, или Nullable<T>?
я где-то слышал что он медленный) сейчас как раз таки все ок, т.к. бокс объекта ничего не делает, просто в структуру его нельзя превращать

Ну и есть страничка от микрософта, где они говорят когда не стоит использовать структуру

не знаю найду ли сейчас ссылку, но она есть)

о https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/choosing-between-class-and-struct

Evgeniy
21.08.2017
12:08:11
По крайне мере не больше, чем box
А ты не помнишь, option уже сделали struct или нет?

Ilya
21.08.2017
12:08:38
нельзя же просто взять и сделать оption структурой, поломается же бинарная совместимость

Evgeniy
21.08.2017
12:09:18
Мало ли, вдруг StructOption<T> завезли.

Ilya
21.08.2017
12:09:44
ну тогда это уже не будет тот самый option, а будет как с туплами

Nikolay
21.08.2017
12:09:53
Но можно юзать Nullable

Google
Ilya
21.08.2017
12:11:08
В nullable можно класть только структуру, а почему плохо использовать структуры выше уже было

Vasily
21.08.2017
12:11:42
Дык это

Vladimir
21.08.2017
12:11:43
А collection откуда берется?
на начальной загрузке приложения я туда все данные из файла загружаю, они там сидят до самого конца

Vasily
21.08.2017
12:11:58
Почему массив по умолчанию None не инициализировать?

Если уж такая проблема

Vladimir
21.08.2017
12:12:35
Так нет проблемы)

Вопрос есть структуры или классы

Aleksander
21.08.2017
12:12:52
насчет структур - все бы хорошо, но там в составе объекта наверное куча строк.. т.е. после перехода на структуры будет не N*5 объектов, а N*4

есть ли смысл?

можно конечно строки вынести в словарик, и тогда количество объектов может резко уменьшится..

Vladimir
21.08.2017
12:14:43
объекты небольшие

Aleksander
21.08.2017
12:14:47
но опять таки, словарь синхронизировать надо

Vladimir
21.08.2017
12:15:02
вот такие {"id":5,"first_name":"Виктория","last_name":"Кисленчан","birth_date":-401414400,"gender":"f","email":"sopetelasochaed@mail.ru"}

Aleksander
21.08.2017
12:15:36
ну вот, сколько тут объектов?

минимум 4

Vladimir
21.08.2017
12:16:57
3 строки, тут у меня

Aleksander
21.08.2017
12:17:23
ну чем больше объектов, тем больше работы для GC

Nikolay
21.08.2017
12:17:46
ну чем больше объектов, тем больше работы для GC
Но GC со структурами получается проще работать, разве нет?

Google
Aleksander
21.08.2017
12:17:49
я к тому, что без структур сейчас N*4 объекта. со структурами будет N*3

смысл?

Ilya
21.08.2017
12:18:44
gc со структурами вообще работать не надо, но в данном конкретном случае будет только хуже, ибо https://github.com/ServiceStack/ServiceStack.Text/blob/870658eff62c334162b092a4f33cd52b96554bed/src/ServiceStack.Text/Json/JsonReader.Generic.cs#L76 вот тут будет боксинг любой структуры во время десериализации

Vladimir
21.08.2017
12:20:18
а ты серверный GC выставил?
не помогло, ровно в том же месте провал

Компилятор сам ставит команды для освобождения памяти?
стек автоматически очищается, если структуры в стеке после выхода из функции

Aleksander
21.08.2017
12:26:31
а настройки из fsproj точно подтягиваются во время работы приложения?)

Donat
21.08.2017
12:32:08
http://c2n.me/3N65rEg
а почему такой пик в середине?

Nikolay
21.08.2017
12:32:51
а почему такой пик в середине?
Работа сборщика мусора

Friedrich
21.08.2017
12:49:25
https://github.com/Microsoft/visualfsharp/issues/3440 Лол, их попросили, а они взяли и поменяли :)

Vlad
21.08.2017
12:50:53
А в чем разница между мит и апач2?

Friedrich
21.08.2017
12:51:28
А фиг его разберёт, если честно.

Vladimir
21.08.2017
12:51:55
может LowLatency поможет)
пик в другом месте просто получился, но остался =(

надо как-то убрать сборку мусора вообще

Nikolay
21.08.2017
12:53:39
надо как-то убрать сборку мусора вообще
Может с десериализацией что-то придумать?

Vladimir
21.08.2017
12:55:16
там есть вроде пару секунд когда запросы не идут)

Google
Vladimir
21.08.2017
12:55:39
между этапами, можно попробовать этот момент отловить и тогда ее запустить

Vladimir
21.08.2017
12:56:20
ну и конечно попробовать написать кастомный десериализатор)

который сразу будет структуры создавать

но это то еще удовольствие =(

Friedrich
21.08.2017
13:04:42
надо как-то убрать сборку мусора вообще
https://msdn.microsoft.com/en-us/library/system.gc.trystartnogcregion(v=vs.110).aspx

А ещё вам нужно юзать Span<T>

Выделять какой-нибудь огромный буфер, а внутри спанами размечать структуры.

Ой, или это что-то из будущего? Его не запилили ещё? :(

Aleksander
21.08.2017
13:06:27
а чем это собственно лучше обычного массива структур?

Evgeniy
21.08.2017
13:06:55
Ой, или это что-то из будущего? Его не запилили ещё? :(
А там в будущем провайдеры типов починили? :)

Friedrich
21.08.2017
13:07:35
а чем это собственно лучше обычного массива структур?
Нуу, это на самом деле хороший вопрос. По идее, спаны можно выделять на unmanaged-памяти, это будет получше с точки зрения GC. Но я не уверен, что это прям наголову выше массивов структур; пожалуй, нет.

Aleksander
21.08.2017
13:07:42
хм

похоже, это будет работать со сложными объектами

точнее с структурами внутри которых могут лежать строки\массивы

Vladimir
21.08.2017
13:20:36
if (reqCount = 18090 || reqCount = 30090) then GC.Collect(1) ?

Vasily
21.08.2017
13:25:57
В целом, с unmanaged и сейчас можно работать

Но можно попасть

Страница 276 из 772