Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

XOR для массива


Страницы:   1 2 3 4

MikeZ ©   (2006-06-04 16:30:00) 

Всем день добрый!

Надо сделать XOR для чисел, являющихся элементами массива.
Сейчас делаю a[i] xor b[i], перебирая так весь массив.

Есть ли какой-нибудь способ делать это по-красивее и, главное, побыстрее.


MikeZ   (2006-06-04 21:54:00) [61]

Спасибо за ответ, попробуем


Rial   (2006-06-04 20:15:00) [62]

Но, между прочим, в случае с массивом, если пробегать просто все элементы,
то мой способ примерно в 3.5 раза быстрее.


Rial   (2006-06-04 20:14:00) [63]

procedure XorData(Const MainData,KeyData :Pointer;Const MainSize,KeySize :Integer);
Var ptMain, ptKey : PByte;
   I, J, D       : Integer;
begin
If (MainSize<=0)or(KeySize<=0)then Exit;
D :=MainSize div KeySize;
ptMain :=MainData;
I :=0;
While (I<=D-1)do begin
 ptKey :=KeyData;
 J     :=0;
 While (J<=KeySize-1)do begin
  ptMain^:=ptMain^ xor ptKey^;
  Inc (ptMain);
  Inc (ptKey);
  Inc (J);
 end;
 Inc(I);
end;
D :=MainSize mod KeySize;
ptKey :=KeyData;
J:=0;
While (J<=D-1)do begin
 ptMain^:=ptMain^ xor ptKey^;
 Inc (ptMain);
 Inc (ptKey);
 Inc (J);
end;
end;

Не знаю, куда быстрее.
При сравнении с вариантом, написанном мною на асме, разницы
заметной не нашел.
Возможно, а плохо знаю ассемблер...


Asteroid   (2006-06-04 20:08:00) [64]

Не уверен, что это возможно, разве что можно ускорить процесс ассемблерной вставкой с операциями на XMM регистрах (movq, pxor).


Kolan   (2006-06-04 18:52:00) [65]


> Rial ©   (04.06.06 18:12) [1]

Я думаю автор хочек каким-то хитрым образом(может сдвигом каким-то) проXORить сразу весь массив... Мне тоже интересно возможно ли это.


Rial   (2006-06-04 18:12:00) [66]

Это и так достаточно быстро и кравиво.
Быстродействие проверял ?
Точно уж быстрее записи, чтения и т.п. на порядок.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо