Форум: "Основная";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];
Вниз
Все просто Найти похожие ветки
← →
Fast (2002-07-31 15:15) [0]Как скопировать N элементов из одного массива в другой не используя цикл? (борюсь за скорость)
← →
Skier (2002-07-31 15:16) [1]>Fast
Move(...) ?
← →
Fast (2002-07-31 15:19) [2]спа.
← →
Alx2 (2002-07-31 15:23) [3]Move тоже не всегда панацея. Бывает, в цикле быстрее получается.
Кстати, размер элементов массива какой? Если-что, можно задействовать 64-битную арифметику.
← →
Fast (2002-07-31 15:35) [4]размер элементов в 1 байт
← →
Leran2002 (2002-07-31 15:47) [5]Держи может подойдет:
procedure TForm1.Button4Click(Sender: TObject);
var
a,b:array[1..100]of byte;
i:integer;
begin
for i:=1 to 100 do a[i]:=i; // забивка массива "a"
CopyMemory(@b,@a,SizeOf(a)); // из "a" в "b"
for i:=1 to 100 do // проверка
Memo1.Lines.Add(IntToStr(b[i]));
end;
← →
Leran2002 (2002-07-31 15:53) [6]Модифицировал проверку и забивку:
procedure TForm1.Button4Click(Sender: TObject);
const
n=1000;
var
a,b:array[1..n]of byte;
i:integer;
begin
for i:=1 to n do a[i]:=random(256); // забивка массива "a"
CopyMemory(@b,@a,SizeOf(a)); // из "a" в "b"
for i:=1 to n do // проверка
Memo1.Lines.Add(IntToStr(a[i])+"="+IntToStr(b[i]));
end;
← →
Alx2 (2002-07-31 15:53) [7]>Fast (31.07.02 15:35)
Тогда, наверное, будет интересно сравнить move с поэлементным копированием массива типа integer.
procedure TForm1.Button1Click(Sender: TObject);
Type TBytesArray = packed array [1..1024] of byte;
TIntsArray = packed array [1..256] of integer;
Var
A,B : TBytesArray;
k : integer;
begin
for k := 1 to 1024 do A[k] := k; // Заполняем массив значениями k mod 256
for k := 1 to 256 do // копируем содержимое A в B
TIntsArray(B)[k]:=TIntsArray(A)[k];
end;
← →
Fast (2002-07-31 15:58) [8]а на случай если надо вставить N элементов не с начала, а скажем с M позиции. как сместить адресс?
← →
Leran2002 (2002-07-31 16:05) [9]Держи:
procedure TForm1.Button4Click(Sender: TObject);
const
n=1000;
m=10;
type
MyType=byte;
var
a,b:array[1..n]of MyType;
i:integer;
begin
for i:=1 to n do a[i]:=random(256); // забивка массива "a"
ZeroMemory(@b,SizeOf(MyType)*n); // зануляем массив "b"
CopyMemory(@b[m],@a[m],SizeOf(MyType)*(n-m+1)); // из "a" в "b"
for i:=1 to n do // проверка
Memo1.Lines.Add(IntToStr(a[i])+"="+IntToStr(b[i]));
end;
← →
Fast (2002-07-31 16:05) [10]>Leran2002 © (31.07.02 15:53)
а на случай если надо вставить N элементов не с начала, а скажем с M позиции. как сместить адресс?
← →
Alx2 (2002-07-31 16:06) [11]1 integer=4 byte
отсюда и считается.
Но сначала надо скорострельность по сравнению с move проверить.
← →
Leran2002 (2002-07-31 16:07) [12]Адрес пишется вообщето с одной "С"... ;-))
← →
Fast (2002-07-31 16:08) [13]понял
thx
← →
Leran2002 (2002-07-31 16:10) [14]Ну че все нормально... Подошло???
← →
Fast (2002-07-31 16:24) [15]>Leran2002 © (31.07.02 16:10)
да отлично то что надо
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c