Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.054 c
15-1136700279
ezorcist
2006-01-08 09:04
2006.01.29
Просто глупость))


1-1133945910
Мастер Ломастер
2005-12-07 11:58
2006.01.29
Символ в нижнем или верхнем индексе?


3-1133012302
начиннающий
2005-11-26 16:38
2006.01.29
eoAsyncExecute


3-1132312752
o2
2005-11-18 14:19
2006.01.29
Небольшая локальная БД


2-1137397081
pavel_guzhanov
2006-01-16 10:38
2006.01.29
проблемы с вычислением десятичного логарифма





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский