
Vladimir
22.08.2017
10:53:56
так причем тут апдейт) нет проблемы с апдейтами)
после них все равно сборка делается, а потом ничего уже не апдейтится

Nikolay
22.08.2017
10:54:48
Нужно подходить со стороны уменьшения стоимости вызова GC,так как даже если получится его дотянуть до конца обстрела, при увеличении RPS всё будет ломаться)

Vladimir
22.08.2017
10:55:10
Это да, обещают его увеличить к концу недели

Google

Vladimir
22.08.2017
10:59:05
Пик это посути одна единственная сборка 0го уровня
Ну и сейчас стоит GCServer и GCConcurrent

Roman
22.08.2017
11:08:33
Я бы на вашем месте первым делом избавился от создания лишних строк при чтении Body и десериализации
для этого использовал бы десериакизацию из стрима напрямую
не читал бы Body как строку, а брал риквест из контекста и читал напрямую в десериализатор

Aleksander
22.08.2017
11:14:57

Roman
22.08.2017
11:17:41
И зачем проверка на содржание null в строке в getStringFromRequest?

Vladimir
22.08.2017
11:21:06

Roman
22.08.2017
11:22:29

Vladimir
22.08.2017
11:23:25
Там же и посты я так понимаю
да, посты во 2й фазе, там всего 100RPS, так что это норм. Плюс я строки записываю в словарь чтобы потом сразу строки и отдавать. Ну и условие с null
Но на самом деле я сейчас думаю избавиться от словаря строк, глядишь тогда памяти хватит)

Google

Vladimir
22.08.2017
11:25:41
точнее уже не словаря а массива и не одного а сразу всех трех

Roman
22.08.2017
11:26:11
А в гетах обязательно меилбокс использовать?

Vladimir
22.08.2017
11:26:49
в гетах он и не используется

Roman
22.08.2017
11:28:35

Vasily
22.08.2017
11:29:50
Если убирать массивы, можно на сериализации много потерять
О, я нашел косяк на апдейте, кстати

Vladimir
22.08.2017
11:32:16
это да. надо проверять

Vasily
22.08.2017
11:32:33
Там лишняя сериализация

Vladimir
22.08.2017
11:34:21
да, согласен)
спасибо)

Vasily
22.08.2017
11:34:38
Ну и с проверкой на валидность надо что-то делать
По факту, тебе создание объекта нужно только для проверки на валидность
Что не есть гуд

Vladimir
22.08.2017
11:36:03

Vasily
22.08.2017
11:36:23
serializedCollection.[id] <- serializeObject(updatedEntity)
У тебя уже боди есть
Запроса

Vladimir
22.08.2017
11:37:05
ну так здесь я как раз записываю строку в массив строк, чтобы оттуда читать

Vasily
22.08.2017
11:37:15
Еще раз

Google

Vladimir
22.08.2017
11:37:17
боди это не полная сущность

Vasily
22.08.2017
11:37:18
Боди есть

Vladimir
22.08.2017
11:37:27
там могут быть два поля из пяти

Vasily
22.08.2017
11:37:35
А, там паршиал апдейт?

Vladimir
22.08.2017
11:37:37
угу

Vasily
22.08.2017
11:37:56
Тогда лучще совсем по-другому делать
Сущности там flat?

Vladimir
22.08.2017
11:38:35
да

Vasily
22.08.2017
11:38:57
Десериализация в словарь по идее поможет

Vladimir
22.08.2017
11:39:17
а потом на гетах их собирать из словаря?

Vasily
22.08.2017
11:39:25
Из словарей

Vladimir
22.08.2017
11:39:49
думаю это сильно замедлит геты

Vasily
22.08.2017
11:40:19
Вполне возможно,кстати
Интересно, насколько сериализация словаря быстрее сериализации объекта?
Учитывая, что ее можно руками написать
Без рефлекшна

Vladimir
22.08.2017
11:41:51
кстати
можно же и так руками сериализацию написать)
объектов

Vasily
22.08.2017
11:42:12
Это должно сильно ускорить

Google

Vasily
22.08.2017
11:42:28
Только там StringBuilder надо
Чтобы быстрее было
Десериализхацию тоже можно руками

Vladimir
22.08.2017
11:43:30
десереализацию сложно
там проверять типы придется

Vasily
22.08.2017
11:43:44
Не
У тебя же роуты
На каждый тип свои

Vladimir
22.08.2017
11:44:27
я про данные что в Body пришли или в урле

Vasily
22.08.2017
11:44:40
Ну по набору свойств

Vladimir
22.08.2017
11:44:42
их придется проверять на валидность

Vasily
22.08.2017
11:45:04
Там все просто довольно

Vladimir
22.08.2017
11:45:37
ну хотя может и правда
тогда можно будет рекорды вместо классов)

Vasily
22.08.2017
11:46:01
Ты можешь проверить валидность только по набору свойств, больше никак

Vladimir
22.08.2017
11:46:05
ой
структуры

Vasily
22.08.2017
11:46:20
Структуры, да
Пример есть json юзера?
Чтобы далеко не лазить

Google

Vladimir
22.08.2017
11:46:56
ага
https://github.com/sat2707/hlcupdocs/blob/master/data/FULL/data/users_13.json
правда будут больше 16 байт, микрософт не рекомендует делать стуктуры больше 16ти, но хз

Vasily
22.08.2017
11:50:35
Структуры тебе особо не нужны, по идее

Vladimir
22.08.2017
11:50:59
ну они помогут gc разгрузить

Vasily
22.08.2017
11:51:03
Кстати
У нас есть размер юзера ведь
Есть же ограничения
Поэтому можно вообще
Marshal.GCAlloc
И вперед

Roman
22.08.2017
11:52:24
Еще от регулярных выражений надо избавляться

Vasily
22.08.2017
11:53:12
Короче, есть шансы сделать с++ ников

Vladimir
22.08.2017
11:53:38
))

Vasily
22.08.2017
11:54:05
Идея следующая
Делаешь Marshal.AllocateHGlobal
На память под пользователей
Локейшны
И что там еще

Vladimir
22.08.2017
11:55:06
визиты
я с маршалингом не работал, расскажи в чем смысл что хочешь сделать

Vasily
22.08.2017
11:56:36
Смысл в том, что ты последовательно пишешь бинарные данные в определенные области памяти