В C# в таком массиве хранятся указатели на Line, а не сами Line.Это уже понял. Получается, что выделить создать сразу несколько объектов не получится
в таком массиве хранятся указателиА ну понятно массив - это просто лента указателей в памяти.
CAD_DBS.Line[] lns = new CAD_DBS.Line[] { new CAD_DBS.Line(), new CAD_DBS.Line() };Согласен так конечно тоже можно но только когда там к примеру 5 шт.
Это уже понял. Получается, что выделить создать сразу несколько объектов не получится
Нужно каждому элементу
присваивать
А зачем тебе это понадобилось? Хочешь таким образом что-то ускорить?Ну вообще то есть подозрение что это может ускорить работу
Мои тесты показали, что быстрее запросить один раз большой кусок памяти,Нормальные оптимизирующие компиляторы и в C++ и в C# этот вопрос решают за нас.
чем много раз просить по чуть-чуть.
Ну вообще то есть подозрение что это может ускорить работу
Но бороться за какие-то там микросекунды на практике пока что не так уж и важно.
Скорее просто академический интерес к этому.
.....
Мои тесты показали, что быстрее запросить один раз большой кусок памяти,
чем много раз просить по чуть-чуть.
Скорее просто академический интерес к этому.
Думаю, что эта статья не слишком применима для объектов AutoCAD, так как они суть обертки над native ObjectARX.Скорее просто академический интерес к этому.
Для интереса можешь изучить статью.
Там есть часть того, что тебе может понадобиться.
https://habr.com/ru/post/428676/
Тестируй сперва на своих классах для уменьшения числа сюрпризов, а потом можно с Line поэкспериментировать.
int count = lns.Length;Да согласен. Получить один раз размер это наверняка должно быть
for (int i = 0; i < count; i++)
Полагаю, что доступ к адресу локальной переменной работать должен немногоАга.
быстрее чем доступ к адресу свойства Length.
Ведь Length - это просто свойство (ячейка памяти в которой хранится размер)А вот тут не совсем верное предположение. Выносить размер за цикл, это общая рекомендация для различных коллекций и языков. У разных коллекций могут быть "нюансы" внутри полей или методов, выдающих их размер. Например некоторые коллекции не хранят свой размер, и при каждом запросе проводят итерацию по всем элементам и каждый раз считают их количество. Т.е. при итерации коллекции на млн. можешь получить итерацию млн.*млн. и это будет реально медленно. И чтобы не запоминать нюансы, не ловить сюрпризы, и существует эта рекомендация.
при каждом запросе проводят итерацию по всем элементам и каждый раз считают их количествоЭто конечно жесть так делать.
Это конечно жесть так делать.Тем не менее есть контейнеры, которые в принципе не хранят количество элементов. Например, ResultBuffer.
Каждый раз тупо функция будет считать кол-во.