@CSharpChatЭта группа больше не существует

Страница 1372 из 1888
Friedrich
01.07.2017
03:51:05
Ага.

Я пробовал, это работает :)

Viktor
01.07.2017
03:51:54
у меня пока такой потребности вроде не было)

у меня есть горячий метод, который аллоцирует на 20 элементов массив

Google
Viktor
01.07.2017
03:52:31
и только внутри он используется

вот для такого думал делать stackalloc

у меня сделано сейчас как preallocated buffer

но там не тредсейф получается

Friedrich
01.07.2017
03:54:22
вот для такого думал делать stackalloc
Знаешь, я бы побенчмаркал и при прочих равных предпочёл бы какую-то структурную коллекцию вместо stackalloc. При всём уважении к ансейфу, лишний раз лучше в него не лезть :)

Viktor
01.07.2017
03:54:52
может быть) почему нет

в итого оно и так и так на стек ляжет

Friedrich
01.07.2017
03:55:02
(а stackalloc требует unsafe, если кто не знает)

Viktor
01.07.2017
03:55:47
у меня в сборке разрешен unsafe :)

Friedrich
01.07.2017
03:56:00
в итого оно и так и так на стек ляжет
Да, аллокация ляжет на стек, но обращение к элементам такой коллекции _может быть_ дороже, чем к элементам массива. Надо проверять быстродействие.

Viktor
01.07.2017
03:56:11
да, согласен, стоит побенчмаркать

еще была с идея с preallocated buffer для каждого потока

ThreadLocal

Google
Friedrich
01.07.2017
03:57:48
Пул коллекций ещё можно сделать.

Необязательно Thread Local, а просто чтоб их можно было в пуле занимать, а потом обратно в него возвращать.

Viktor
01.07.2017
03:58:39
если не тредлокал, то нужно думать про синхронизацию

Friedrich
01.07.2017
03:59:13
Это уже вопрос того, как ты с этими объектами обращаешься. Может, конечно, статься, что надо думать про синхронизацию.

Viktor
01.07.2017
03:59:15
даже ConcurrentQueue все равно тратит время на "синхронизацию"

Friedrich
01.07.2017
03:59:47
Но тут уже максимально осторожно надо. А то ты щас выручишь копеечку быстродействия на отказе от аллокаций, а потом потратишь рубль на блокировках :)

Viktor
01.07.2017
04:00:03
вот-вот)

а не приходилось тюнить быстродействие DI-контейнера?

Friedrich
01.07.2017
04:11:09
Нет, в DI никогда не упирались. У меня, однако, есть смутное ощущение, что проекты, которым это важно, чаще всего не используют обычные DI-фреймворки.

Но я могу и ошибаться.

Ну, в смысле, что где-нибудь в игрушке ты же не будешь на каждый фрейм зависимости из контейнера резолвить, правильно? :)

Viktor
01.07.2017
04:12:34
нет конечно)

У меня web api и у нас бывают реальные сценарии, когда происходит burst-нагрузка

Friedrich
01.07.2017
04:12:56
О, это интересно.

Viktor
01.07.2017
04:13:05
и я заметил, что неплохо времени уходит на создание контроллеров, я пока придумал воркэраунд

но мне он не очень нравится

т.е. сценарий такой, может придти, условно, 1000 пользователей и начать долбить запросами

в течении часа

я сделал имитацию этого сценария на apache jmeter и сижу профайлю периодически

вот думаю можно ли еще как-то улучшить поиск таких узких мест, помимо нагрузочных тестов

Google
Роман
01.07.2017
05:52:04
1000 пользователей не так и много, если они долбят не в цикле

Viktor
01.07.2017
05:53:24
долбят параллельно, 1000 это как пример

Friedrich
01.07.2017
05:53:53
Ну да, 1000 долбителей в цикле у него, может, имитируют нагрузку от 100к обычных посетителей :)

Нормальный подход, годится.

Роман
01.07.2017
05:54:32
Нормальный подход, годится.
но это не тысяча пользователей которая пришла

Friedrich
01.07.2017
05:54:46
Сильно зависит от специфики системы.

Роман
01.07.2017
05:55:26
я делал тесты веб апи на азуре a2, веб апи тянет 1000 эхо запросов в секунду, это не мало, не знаю что там ещё улучшать

Friedrich
01.07.2017
05:55:50
У меня, например, был сценарий, когда пользователи именно циклично долбят систему. И 1000 работающих пользователей создавали нефиговую такую нагрузку на реплику из десятка MSSQL-серверов.

Viktor
01.07.2017
05:55:58
у меня не 1000 эхо запросов) там везде логика и стейт меняется

Friedrich
01.07.2017
05:56:27
я делал тесты веб апи на азуре a2, веб апи тянет 1000 эхо запросов в секунду, это не мало, не знаю что там ещё улучшать
Тут тестируют не оверхед от веб-сервера, а быстродействие обработчиков запросов :)

В то, что можно на Kestrel достичь тыщи RPS, я охотно верю.

Роман
01.07.2017
05:57:04
вот, простые круд по 460 запросов в секунду вытягивало

Friedrich
01.07.2017
05:57:19
> простые

Роман
01.07.2017
05:57:26
но база была не загружена, да и крутилась на долхом инстансе

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

Viktor
01.07.2017
05:58:32
нет, нифига подобного

Роман
01.07.2017
05:59:36
а как тогда?

Viktor
01.07.2017
05:59:41
у меня там большой граф объектов, и я нашел, что для сценария на "1000" приложение прокачивает 26гб оперативки

после некоторых пассов руками я сократил до 8гб

но мне кажется, что все равно много

Google
Роман
01.07.2017
06:00:26
это что за объекты такие?

из базы?

Viktor
01.07.2017
06:00:38
то что граф зависимостей большой это отдельная история и за неделю работы она не решится)

не только, там сервисы еще большие

Роман
01.07.2017
06:01:32
сразу вопрос: они стейтлес?

Viktor
01.07.2017
06:01:37
часть сервисов я уже разбил на более мелкие, чтобы сократить граф, но повторюсь, что там нетривиально разбивать

нет

зависят от текущей user identity

Роман
01.07.2017
06:02:01
у меня на проекте почти все сервисы можно сделать сингтонами в ди

Admin
ERROR: S client not available

Viktor
01.07.2017
06:02:10
повезло)

Роман
01.07.2017
06:02:20
сам писал :)

Friedrich
01.07.2017
06:03:07
Бывают случаи, когда ты можешь 10% перфоманса срубить на всякой ерунде (типа инстанцирования контроллеров), не особо утруждая себя.

А чтобы разобраться, что оптимизировать в логике, это ещё думать надо :)

Viktor
01.07.2017
06:03:28
вот и я о чем) жалко не могу показать снепшоты, нда и все такое

Роман
01.07.2017
06:05:04
бывают, я не знаю что у вас за проект, но у меня текущая производительность всех устраивает: если не потянет апликейшен, просто добавится апилкейшен, т.к. если такое случится - значит пользователей много, инвесторы рады, денег на железо не жалко

Viktor
01.07.2017
06:05:37
у нас приложение может и масштабируется горизонтально, но есть еще задача снизить косты на железо

плюс есть требование непосредственно от заказчика, что в некоторых сценариях время ответа должно быть минимальным

никакого rocket-science, но тем не менее

Google
Vinc
01.07.2017
08:42:57
http://jetbrains.tech/
есть свежее?

Gid
01.07.2017
08:43:08
Не, надо свой серв ставить

Vinc
01.07.2017
08:43:31
Оо, всё так плохо стало?

Gid
01.07.2017
08:44:33
Ну тип

Поставил 1 раз

Летучая
01.07.2017
08:48:58
И всё сразу станет хорошо

Жалуется он ещё

Или пара тысяч или пара часов, иначе никак

Vinc
01.07.2017
08:49:21
закончится испытательный - можно будет и купить

Zymlex
01.07.2017
08:49:33
как сейчас rider как ide? стабилен?

Gid
01.07.2017
08:49:46
как сейчас rider как ide? стабилен?
Да, стабильно без дебага

Леонид
01.07.2017
08:49:48
Нет

В нём еще ничего нету

Vinc
01.07.2017
08:50:18
кто за wpf топит, помогите с datatype разобраться

<ScrollViewer Grid.Row="0" VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Disabled" Margin="5"> <ItemsControl ItemsSource="{Binding Measurements}"> <ItemsControl.ItemTemplate> <DataTemplate> <DockPanel> <TextBlock DockPanel.Dock="Right" Text="{Binding Value, Mode=OneWay}"/> тут есть нюанс: Value есть int, а есть double. как их выводить? <TextBlock Text="{Binding Name}" TextTrimming="CharacterEllipsis"/> </DockPanel> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> </ScrollViewer>

Vlad
01.07.2017
08:51:50
Vinc
01.07.2017
08:51:55
ну даблы у меня выводятся(в строки конвертятся, наверняка), а инты не выводятся

Летучая
01.07.2017
08:52:05
сделай строковую пропертю

Страница 1372 из 1888

Эта группа больше не существует Эта группа больше не существует