Inline - методы, раскрутка циклов. Надо ли?

Ну да.

Ну сделайте… Я действительно считаю это очень красивым решением, но по моему это стоит отложить в долгий ящик)).

Потому что тут есть очень много вкусных плюшек, которых хочется на много больше))

Мне тоже этого хочется. Ну хоть бы static class :face_with_raised_eyebrow:

Кстати, неплохо было бы размещать хотя бы примерный список изменений от билда к билду. А то вот так обновляешься, как робот, и не понимаешь, что это даёт. Это ведь не трудно. Создать топик, доступный для записи только Админу, чтобы лишнего ничего не писали, и чтобы он туда делал пометки. Как вышло обновление - пост, что изменилось. @Admin, как считаете?

2 лайка

Мы тут уже нашли одну недавно :slight_smile:

На Github всё есть от коммита к коммиту

Да, но там только список изменённых строк, а описания норм нету (обычно)…

Нет, там с каждым коммитом хранится пояснение, что изменено

Ну вот, к примеру. Единственное пояснение - “Незначительные изменения в грамматике” - ничего не даёт. Похоже, теперь после case ... of можно ставить дополнительную точку с запятой. А есть что то ещё? Даже если понимать код, надо время чтоб разобраться, как внесённые изменения на что либо повлияют на работу компилятора. А так - описания нигде нет.

Ну, это мелочи, их море. Кстати, код, который Вы зачем-то привели на Github, не компилируется и не форматируется

Это код как раз из того коммита, на которого в сообщении выше приводится ссылка. Там он был добавлен в тесты, вот я и решил что возможность писать так добавили в новой версии, которой ещё нет в установщике.

1 лайк

Commit <> Build

Я не буду по каждому билду делать пояснения. Это очень большая нагрузка. Иногда бывает по нескольку билдов в день. И исправленные ошибки и неточности - тоже не буду писать - всё это можно прочитать в коммитах

Ремарка: инлайнинг позволяет добиться ускорений не за счет того, что call и связанные push/pop дорого стоят: они ничего не стоят. Ускорение получается за счет cache-prefetch и ILP процессора. Раскрутка цикла — это чистая оптимизация ILP. Эти вещи можно и нужно иногда оптимизировать вручную, т.к. в целом компиляторы не всегда справляются, но точно не в .NET коде. Здесь, я думаю, это все-таки задача VM.

По поводу инлайна уже выяснили. С ним справляется NET и этим можно пытаться манипулировать. Касательно раскрутки циклов - соглашусь, но вот она может быть крайне примитивной, как в примере выше, но очень кривой. Это должен делать компилятор по указанию программиста. Раскручивать всё вручную = сделать код непригодным для чтения.

не знаю, как PABC .NET и вообще .NET, но большинство компиляторов делают разворачивание цикла без всяких директив там, где латентность тела цикла достаточно мала.

Компилятор C# это делает. Компилятор PABC.NET - нет. Я предлагаю исправить это, но, судя по опросу в соседнем топике, это исправление многим не понравится.

А он это делает по директиве?