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

Страница 465 из 1888
Nikita
02.03.2017
14:36:14
30 таблиц для всего-всего прилагается

Roman
02.03.2017
14:48:40
tm
02.03.2017
14:51:28
Просто был рефакторинг ради рефакторинга и красивой архитектуры
Для себя вывел положение ползунка "быстро - круто" Должны выполняться условия: - Понятно команде - Тестируемо - Расширяемо/изменяемо для обозримых (подчёркнуто) задач - Просто (на сколько это возможно) - Выполняет все бизнесс требования текущего момента. Предполагает расширение в сторону "идей" бизнесса Если оптимизировать именно эту функцию (как сумму квадратов этих показателей ;) То становится понятна грань перфекционизма и напротив, спагетти

Arseniy
02.03.2017
14:52:35
это тоже самое, что и срач выше. за всё хорошее против всего плохого)

Google
tm
02.03.2017
14:52:46
Типа, замутил всё по бест практикам - и простота ушла, команда боится твоей иерархии в 100500 классов. Написал лапшу - и никто не рискнёт брать за это ответственность

tm
02.03.2017
14:53:23
это тоже самое, что и срач выше. за всё хорошее против всего плохого)
Я попытался свести это к формализованным критериям. Функцию которую нужно и можно максимизировать

Axm
02.03.2017
14:53:25
офигенный код! То что нужно!
видите? заказчику похер на говнокод, цель выполнена, все довольны)

Женя
02.03.2017
14:54:31
видите? заказчику похер на говнокод, цель выполнена, все довольны)
да нет, он для меня многое прояснил в шарповых событиях

Vasily
02.03.2017
14:54:32
:)

Axm
02.03.2017
14:54:46
Andrew
02.03.2017
14:55:15
Nikita
02.03.2017
14:55:33
и подводных камней ещё на 10

Axm
02.03.2017
14:55:36
ты лучше конкретный вопрос по событиям спроси

Женя
02.03.2017
14:55:41
ну если шарпы не знаешь, то все равно непонятно

Axm
02.03.2017
14:55:47
там одна страница доки по ним)
вот гонишь же про одну страницу

Andrew
02.03.2017
14:56:00
и подводных камней ещё на 10
я без событий предлагал вариант)

Google
Andrew
02.03.2017
14:57:13
вот гонишь же про одну страницу
ну две? какой в них рокетсайнс? подписка, отписка, свои хандлеры, новый подход через инвоук, чё еще с ними?

замуты с трэдсэйф?

так они ни разу вообще)

Andrew
02.03.2017
14:59:53
еее я победииил)

Nikita
02.03.2017
15:00:13
замуты с трэдсэйф?
замуты с MulticastDelegate

через которых это всё счастье и работает

Andrew
02.03.2017
15:01:41
потому я и предлагал без них) лучший тредсейф - отсутствие разделенных ресурсов

Nikolay
02.03.2017
16:23:37
А кто-нибудь знает, будет ли разница в скорости? for (var i = 0; i < items.Count; i++) { var item = items[i]; item.a = item.b == 0 ? 1 : -1; } vs for (var i = 0; i < items.Count; i++) { items[i].a = items[i].b == 0 ? 1 : -1; }

Vladimir
02.03.2017
16:24:32
микросекунды экономишь?

Сергей
02.03.2017
16:25:01
Даже не микро

Nikolay
02.03.2017
16:25:10
Такты экономлю

Nikita
02.03.2017
16:25:31
в дизасм тогда смотри

а не в чатах спрашивай

Vladimir
02.03.2017
16:25:48
тогда сомневаюсь что поможет, скорее всего это компильнётся в одинаковый байткод )

Nikolay
02.03.2017
16:25:57
Чего вы такие злые? =/

Nikita
02.03.2017
16:26:46
https://tryroslyn.azurewebsites.net

на тебе смотрелку байткода

Nikolay
02.03.2017
16:28:51
Эммм, странно он декомпилит

for (int i = 0; i < list.Count; i++;) { List<int> list2 = list; int index = i; list2[index] += i; }

Google
Andrew
02.03.2017
16:33:53
Эммм, странно он декомпилит
В linqpad такое посмотреть можно

Nikita
02.03.2017
16:36:25
Сергей
02.03.2017
16:45:57
Ну так что быстрее то в итоге?

Arseniy
02.03.2017
16:46:43
ничего. одинаковый байткод

Сергей
02.03.2017
16:47:24
хм Method | Mean | StdDev | ------- |----------- |---------- | M1 | 43.4137 ms | 0.8378 ms | M2 | 54.1383 ms | 1.1063 ms |

Nikita
02.03.2017
16:47:41
а ты точно правильно делаешь бенчмарк?

Pichugin
02.03.2017
16:47:49
Мерелку от Акиньшина запустите.

Сергей
02.03.2017
16:47:57
Нет конечно, я же не Акиньшин

Pichugin
02.03.2017
16:48:58
https://github.com/dotnet/BenchmarkDotNet

Но думаю разницы не должно быть. Разница в одной операции - скопировать ссылку на объект в переменную метода. Котрую отпимизатор как раз может быть и убрал бы, если бы там что-нибудь.. короче зависит от кучи всего.

Roman
02.03.2017
16:56:21
https://t.me/vr_developers Всем привет! Объединяем VR разработчиков

Arseniy
02.03.2017
16:59:06
ничего. одинаковый байткод
крипво смотрел. разный байткод выходит

Сергей
02.03.2017
17:11:18


Method | Mean | StdErr | StdDev | ------- |----------- |---------- |---------- | M1 | 35.2904 ms | 0.2382 ms | 0.9226 ms | M2 | 36.2811 ms | 0.3536 ms | 1.3695 ms | M3 | 16.0743 ms | 0.0648 ms | 0.2509 ms | M4 | 19.9209 ms | 0.3047 ms | 1.3962 ms |

Nikita
02.03.2017
17:11:50
Ты бы это

на свежих коллекциях делал

Pichugin
02.03.2017
17:12:09
Этап 1) Генерация MSIL (компилятор) 2) Генерация ASM (jit)

Nikolay
02.03.2017
17:12:48
Короче, сделал несколько разных тестов

Сергей
02.03.2017
17:12:55
на свежих коллекциях делал
в чем будет разница не на свежих?

Nikolay
02.03.2017
17:13:07
Вариант с созданием новой переменной всегда был быстрее

Google
Nikita
02.03.2017
17:13:13
ну у тебя уже всякие кеши и предсказамусы переходов прогрелись

Сергей
02.03.2017
17:13:59
Ну т.е если я поменяю порядок бенчмарков то будет разница?

Nikolay
02.03.2017
17:15:56
Что-то не пойму прикол

Admin
ERROR: S client not available

Nikolay
02.03.2017
17:16:15
ref var item = ref _items2[i];

Это чё такое?

Nikita
02.03.2017
17:16:25
код

Nikolay
02.03.2017
17:17:03
Почему у меня такой хак не работает?

Nikita
02.03.2017
17:17:56
пушто это не хак

Pichugin
02.03.2017
17:18:03
смотрится странно :) он берет исходную ссылку, не создавая копию.

но ведь массив и так ее хранит, если занулить что будет? 0x111, null, 0x222 ?

Nikolay
02.03.2017
17:19:30
Что я делаю не так?

Сергей
02.03.2017
17:19:30
В общем если изменить порядок то разницы нет, но нюансах я не шарю

Nikolay
02.03.2017
17:19:37


Сергей
02.03.2017
17:19:43
Nikolay
02.03.2017
17:19:52
Ммм

Круто

У меня инициализация массива так сделана: var items = new List<Test?); for (var i = 0; i < 10000000; i++) { items.Add(new Test { A = rnd.Next(0, 1000), B = rnd.Next(0, 1) }); }

Так что никаких хитроумных кэшей быть не должно

Короче, получается так: Если один раз обращаешься к элементу массива, быстрее будет без создания переменной Если более одного раза обращаешься к элементу массива, быстрее будет с созданием переменной

Google
Nikolay
02.03.2017
17:27:52
Мерял стопвотчем

Делал несколько тестов на одной большой выборке

Выборка была одинаковой

Каждый тест запускался отдельной программой в Release конфигурации

Сергей
02.03.2017
17:29:17
Ерунда это все

Я про такие бенчмарки и выводы из них

Nikolay
02.03.2017
17:29:47
Сделай свой бенчмарк, если это ерунда

Сергей
02.03.2017
17:30:24
Никто кроме Акиньшена не сделает...

Nikita
02.03.2017
17:31:32
джон скит сделает

Nikolay
02.03.2017
17:33:40
Ну я никому своё мнение не навязываю, меня такой тест вполне устраивает, и результат теста в целом логичен

Sergey
02.03.2017
17:41:19
Коллеги

Если я клас делаю сериазебл

Класс

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

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