
Max
18.03.2017
23:53:22
Async wrode
Ну или поток-в-потоке

Gid
18.03.2017
23:56:01
Ну норм

Google

Gid
18.03.2017
23:56:08
Глубже надо идти

Max
18.03.2017
23:56:47
Ну про async я вообще не понял, но я недоджуниор

Gid
18.03.2017
23:59:12
Я недомидл но меме не понял
БЛЯТЬ

anton
19.03.2017
00:00:16
поток в потоке ;)
ну и стайл async () => await это тоже стиль

Gid
19.03.2017
00:00:18
Увидел первую строчку
Все терь я начал орать
Сложные ночные мемес
Тут конечно все спят
Но кто-то работал с вебпурифай
Мб
Или с buffer

Google

Max
19.03.2017
00:01:49
Все по машинам
)

anton
19.03.2017
00:02:47
Сложные ночные мемес
я минут 5 разглядывал этот код.. думал показалось..
теперь жду понедельника, что бы автору в глаза посмотреть :)

Gid
19.03.2017
00:17:12
Не понял вообще сразу
Выглядит все нормально
Вопрос
А зачем он сет мин тредс делает
Вначале метода
100
Это сакральный ритуал?

anton
19.03.2017
00:30:13
я пока еще не понял :)
но кажется таким образом делает лимит на 100 одновременных коннектов
но я пока не уверен что оно так работает

Aler
19.03.2017
01:08:50
Коллеги, а как думаете, что лучше (я ленивый жоп): проверить экземпляр через foo is IDisposable и затем кастить или кастить через as IDisposable и проверять на null?

Михаил
19.03.2017
02:03:23
мне кажется правильней сначала провести проверку =)

Andrew
19.03.2017
03:56:58

Aler
19.03.2017
03:57:12
2-е

Google

Andrew
19.03.2017
03:58:59
А сделать и замерить через таймеры? Вообще самая норм идея - откастить ДО того как оно попадёт в критичный к скорости блок
Я могу но попозже и на моно или коре
Спинной мозг говорит что проверка на нулл быстрее
2-е
У тебя совсем рандомные данные?

Aler
19.03.2017
04:02:23
что ты имеешь ввиду?

Vladimir Bondaryuk
19.03.2017
04:03:13
Почему нельзя сделать через as и один раз на null а не два

Andrew
19.03.2017
04:03:15

Aler
19.03.2017
04:04:43
просто пишут и так, и так, а как правильнее - хз
я, кстати, думаю, что is окажется лучше

Vladimir Bondaryuk
19.03.2017
04:06:12
В таком случае тебе прежде чем вызвать dispose надо будет ещё раз проверить на null

Andrew
19.03.2017
04:06:12
Если типы твои - данные не рандомные, реализуешь/наследуешь интерфейс и кастить не надо вообще

Andrew
19.03.2017
04:09:40

Vladimir Bondaryuk
19.03.2017
04:10:44

Aler
19.03.2017
04:11:22
забавный факт
что если проверка проходит, то быстрее, чем если нет
а разницы в as\is нету

Дмитрий
19.03.2017
04:12:15

Aler
19.03.2017
04:12:29
вот верхний и нижний вариант разницы не дают никакой

Google

Aler
19.03.2017
04:12:49
is case
Undisposable ticks: 50453
Disposable ticks: 32857
as case
Undisposable ticks: 52209
Disposable ticks: 33577
ну хотя есть небольшая
связано с работой со стеком наверно

Andrew
19.03.2017
04:13:31

Vladimir Bondaryuk
19.03.2017
04:13:38
As внутри выглядит:
expression is type ? (type)expression : (type)null

Admin
ERROR: S client not available

Aler
19.03.2017
04:13:42
первый таймер как раз это

Andrew
19.03.2017
04:14:06
а, прощелкал

Aler
19.03.2017
04:15:36
is лучше все же
увеличил количество повторов и отрыв стал заметнее

Andrew
19.03.2017
04:16:22
попробуй в as кейсе не создавать переменную

Aler
19.03.2017
04:16:39
а как ты это представляешь?

Andrew
19.03.2017
04:17:02
(blabla as BlaBla)?.Dispose()

Aler
19.03.2017
04:17:03
if((foo as IDisposable) != null) ?
это сахар

Дмитрий
19.03.2017
04:17:13
(foo as IDisposable)?.Dispose()

Aler
19.03.2017
04:17:19
оно создаст
и я не могу C# 6 использовать

Andrew
19.03.2017
04:17:34
ns cdj. yt cjplfdfq

Дмитрий
19.03.2017
04:17:38
ну при компиляции да

Google

Andrew
19.03.2017
04:17:43
юнете?

Aler
19.03.2017
04:18:13
я умею в юнити C#6 использовать, но проблема в том, что это не только для меня код

Andrew
19.03.2017
04:19:29
в трай кэтче попробуй) раз уже проверяешь)

Vladimir Bondaryuk
19.03.2017
04:22:08
is лучше все же
по поводу написания бенчмарков собственных есть очень хорошая книга: оптимизачия приложений на платформе net. там на 80-й странице приведен пример как раз с as/is. и некорректностью просто прогона внутри for

Aler
19.03.2017
04:22:29
а что там сказано?
я поэтому и спросил, так как уверен, что тут есть специфика
про данные и как это работает. У меня данные хранятся в POCO объектах и наследуют интерфейс (пустой) пула своего
но чтобы они могли перед кеширование очищаться к ним можно добавить IDisposable
так как у меня объекты для данных не выбрасываются, а складываются в кеш и переиспользуются при необходимости
Но если в данных есть, например, List<>, то его перед кешированием надо очистить

Andrew
19.03.2017
04:28:30

Aler
19.03.2017
04:28:57
потому, что это потребует в 90% писать public void Dispose() {}
а это некрасиво )

Дмитрий
19.03.2017
04:29:31
явная реализация интерфейса не?

Aler
19.03.2017
04:29:31
или потребует делать родительские классы, что тоже не хочу

Andrew
19.03.2017
04:29:36

Дмитрий
19.03.2017
04:29:58
ну или базовый класс для всех, в котором Dispose реализовать
Эта группа больше не существует