Камрады и представители прекрасной части,
Я тут, недавно, завел бложик на английском на blogs.msdn.microsoft.com завел, так что не обессудьте за небольшую рекламу
.
Есть уже пара постов и последний, посвещен разным режимам сборки мусора и тому, как смена одного на другой может принести 30% уменьшения end-to-end времени работы консольной утилиты. Собственно, сам пост:
Understanding different GC modes with Concurrency Visualizer.
З.Ы. Пожелания, предложения и всяческие комментарии, всецело приветствуются
Здравствуйте, SergeyT., Вы писали:
ST>Есть уже пара постов и последний, посвещен разным режимам сборки мусора и тому, как смена одного на другой может принести 30% уменьшения end-to-end времени работы консольной утилиты. Собственно, сам пост: Understanding different GC modes with Concurrency Visualizer.
Плиз, навесь тег "Минутка хардкора", чтобы не потерялось
Кстати, а ErrorProne.Net ещё живой? Время от времени натыкаюсь на забавные ошибки в реальном коде, аля
class A
{
const int Default = 1;
int field;
public A() { }
public A(int value) { field = value; }
public int PropertyA => field = Default; // <==
}
которые хорошо бы ловить аналайзером. Если надо — могу подкидывать в issues.
Здравствуйте, Sinix, Вы писали:
S>
Thanks!
S>Плиз, навесь тег "Минутка хардкора", чтобы не потерялось
Навесил.
S>Кстати, а ErrorProne.Net ещё живой? Время от времени натыкаюсь на забавные ошибки в реальном коде, аля
S>S>class A
S>{
S> const int Default = 1;
S> int field;
S> public A() { }
S> public A(int value) { field = value; }
S> public int PropertyA => field = Default; // <==
S>}
S>
S>которые хорошо бы ловить аналайзером. Если надо — могу подкидывать в issues.
Нужна мотивация
, так что добавляй, сделаю!
Здравствуйте, SergeyT., Вы писали:
ST>Нужна мотивация, так что добавляй, сделаю!
Ок, пошарю по закромам. Что-то такое было, ещё более жизненное.
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, SergeyT., Вы писали:
ST>>Нужна мотивация, так что добавляй, сделаю!
S>Ок, пошарю по закромам. Что-то такое было, ещё более жизненное.
Из интересного (для меня):
* ReadOnly свойства. Позволяют инициализировать в Object Initialization выражениях, но не дают менять их после конструирования
(я лично устал от того, что мне нужно выбирать: толпа аргументов в конструкторе или неизменяемость. Понимаю, что эта штука будет работать
только при наличии анилизатора, но я с этим готов мириться).
* Для C# 7 можно ругаться, если есть локальная функция, которая захватывает аргумент и в этом же методе есть анонимный метод, захватывающий что-то еще.
Похожий анализ делает R# и говорит, что у нас есть неявно захваченная переменная, но в данном случае — это просто удлинение времени жизни,
но и изменение генерируемого кода: мы начинаем аллоцировать в куче.
* Можно ругаться на ассерты, которые используют интерполяцию строк (это по мотивам одного из твоих сообщений).
Поговорю с коллегами, может они чего-нить посоветуют.
Здравствуйте, SergeyT., Вы писали:
ST>Поговорю с коллегами, может они чего-нить посоветуют.
Как минимум надо
сюда прописаться.
Из "фиг заметишь" я бы добавил проверки на перегрузки
типа такихАвтор: Sharov
Дата: 04.10.16
+ проверки на инлайнинг для методов с вызовами в стиле
.GetCalling()Автор: Sinix
Дата: 18.07.16
.
Всякие неочевидности из реального кода я
вот сюда складываю, но вроде бы там ничего нет достойного отдельного аналайзера.
Здравствуйте, SergeyT., Вы писали:
ST>Поговорю с коллегами, может они чего-нить посоветуют.
И ещё тема
в копилкуАвтор: SanyaVB
Дата: 12.01.17
. Конкретно,
сообщениеАвтор: Lexey
Дата: 16.01.17
от ув.
Lexey — ошибка реально встречается, однако.