Форум: "Начинающим";
Текущий архив: 2006.01.29;
Скачать: [xml.tar.bz2];
Вниз
Динамический массив Найти похожие ветки
← →
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 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.01.29;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.038 c