Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Для быстрого рисования большого колличесва поли... Добавлено: 10.01.03 22:02  

Автор вопроса:  Kulibin
Написал тут клас

public class DinamicArray: IDisposable
{
int Count;
Point[] mas;

public DinamicArray(int count)
{
mas=new Point[count];
Count=count;
}
~DinamicArray()
{
Dispose();
}
unsafe public void Dispose()
{
fixed(Point* k=&mas[0])
{
(k-1)->Y=Count;
}

}

public Point[] Mas{get{return mas;}}
unsafe public int Length
{
get{return mas.Length;}
set
{
if (value>Count)
redim(value);
else
{
fixed(Point* k=&mas[0])
{
(k-1)->Y=value;
}
}
}
}

unsafe public void redim(int newCount)
{
fixed(Point* k=&mas[0])
{
(k-1)->Y=Count;
}
mas=new Point[newCount];
Count=newCount;
}
}
}


А это его использование

Dim paoints as Point
paoints=masCalas.mas()

А теперь в массиве прокручиваем очень много раз
masCalas.Length = какое-то число

'определили массив
g.FillPolygon(bb, paoints)
masCalas.Length=наше старое число

Но вот не задача получается что .Net помему время от времени делает оптимизацию памяти, поэтому программа очень часто вырубается. Выходов за гранницу массива нет.

Если не вырубается то работает в 100 раз быстрее обычного изменения размерности массива.

Где-то видел запрет на перестановку по памяти объекта, может кто-нибудь знает?

Ответить

  Ответы Всего ответов: 1  

Номер ответа: 1
Автор ответа:
 Kulibin



Вопросов: 7
Ответов: 13
 Профиль | | #1 Добавлено: 11.01.03 17:47
Я его сделал
Оказывается есть такая вещь как большие объекты - это когода >85 000 так вот они по памяти не оптимизируются - выделяем размер массива скажем побольше и  все ок работает как часы

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам