Заставить JIT-компилятор исключить проверку границ с помощью классов arraygleton в C# 8 и более ранних версиях.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Заставить JIT-компилятор исключить проверку границ с помощью классов arraygleton в C# 8 и более ранних версиях.

Сообщение Anonymous »

В моем проекте большинство классов (особенно тех, которые содержат много данных) имеют вид:

Код: Выделить всё

public class Polygon
{
////////// Static //////////

public static readonly Polygon[] Items;

////////// Constructor //////////

public readonly int Index;
public readonly Ring[] Rings; // [0, 1+[ 0 : Outer ring, 1+ : Inner ring.

...

public Polygon(int index, Ring[] rings) { ... }

////////// NOT Constructor (but init-only) //////////

public MultiPolygon MultiPolygon;

...
}
Это то, что я называю «массивами». Таковы также его надкласс «Кольцо» и его суперкласс «МультиПолигон». Все экземпляры Polygon создаются одновременно, ни один из них никогда не отбрасывается, а Polygon.Items заполняется всеми указанными экземплярами только один раз.
Я знаю, что JIT-компилятор исключает проверку границ во многих случаях. простые случаи в C#, в которых использование указателей и небезопасного кода часто является избыточным. Как я могу убедиться, что он исключает проверку границ при доступе к Class.Items каждый раз, не переписывая все это с помощью указателей?
Я использую C# 8 только с некоторыми особенности C#9, и я не могу использовать ключевое слово init. (Не уверен, что это будет решением.)

Подробнее здесь: https://stackoverflow.com/questions/790 ... classes-in
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»