Вниз
Скачать: CL | DM;

Динамический массив   Найти похожие ветки 

← →
Tonich ©   (2006-01-14 22:28) [0]

Вопрос в следующем ))
необходимо создать двумерную матрица NxN хде N>4000
так вот Setlenght() конечно создает потобную веСЧ но очень уж долго, как это сделать быстрее а?


← →
VirEx ©   (2006-01-14 22:32) [1]

http://matrix.kladovka.net.ru/ Система матричных вычислений MatriX


← →
PAVIA ©   (2006-01-14 23:07) [2]

procedure TForm1.Button1Click(Sender: TObject);
var a:array of array of byte;
t1,t2:integer;
begin
t1:=GetTickCount;
setlength(a,4000,4000);
t2:=GetTickCount;
caption:="ok "+inttostr(t2-t1);
end;
Работате быстро 32 милисекунды.
Можно через
GetMem(p,4000*4000);
Работает быстро мгновенно.
Но если делать очистку памяти
fillchar(p^,4000*4000,0);
То по скорости будет оналогично
setlength


← →
Tonich ©   (2006-01-14 23:12) [3]

ну вообщето меня не интересует матричные вычисления, меня интересует выделение памяти...


← →
Tonich ©   (2006-01-14 23:16) [4]


> PAVIA ©   (14.01.06 23:07) [2]

нее byte у меня тоже шустро, я забыл уточнить тип массива extended

вот он долго


← →
з. танька   (2006-01-14 23:38) [5]


> Tonich ©   (14.01.06 23:16) [4]

ну GetMem делай, в чем проблема..


← →
Tonich ©   (2006-01-14 23:49) [6]

да проблем нет с одномерным массивом.
а овт двумерных, это ж по сути в памяти он одномерный так?
тоесть если я хочу получить элемент a[1][1] то это в массиве созданным с помошью getmem(p,...) это будит p^[2]?  я прально понимаю?


← →
з. танька   (2006-01-15 00:28) [7]

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

но обычно у людей элемент [1, 1] находится по адресу Pointer(Dword(@начало) + (1*w + 1)*SizeOf(тип_элемента)), где w - "ширина" твово массива..


← →
Tonich ©   (2006-01-15 00:49) [8]


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

ну это понятно

а вот за это пасибо
> но обычно у людей элемент [1, 1] находится по адресу Pointer(Dword(@начало)
> + (1*w + 1)*SizeOf(тип_элемента)), где w - "ширина" твово
> массива..


← →
Loginov Dmitry ©   (2006-01-15 18:02) [9]


> VirEx ©   (14.01.06 22:32) [1]
>
> http://matrix.kladovka.net.ru/ Система матричных вычислений
> MatriX


LOL :))


← →
VirEx ©   (2006-01-15 18:23) [10]


>  [9] Loginov Dmitry ©   (15.01.06 18:02)

сам ты лол


← →
Loginov Dmitry ©   (2006-01-15 19:14) [11]

Но я же со смайликом :)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.026 c
10-1112846482
Demn
2005-04-07 08:01
2006.01.29
Plugin под IE


8-1124103284
<<BEAST>>
2005-08-15 14:54
2006.01.29
Частота звука.


15-1135930426
Суслик
2005-12-30 11:13
2006.01.29
Средства рисования UML


15-1136885631
Pers
2006-01-10 12:33
2006.01.29
Mapinfo


8-1124723116
nuser
2005-08-22 19:05
2006.01.29
Доступ к тегам mp3-файла




   Наверх