Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.04.14;
Скачать: CL | DM;

Вниз

оптимальна скорость доступа к массиву   Найти похожие ветки 

 
brother ©   (2012-12-18 10:34) [40]

пока остановился на вот таком варианте:

...
 TValue = array [0..DictValueLength - 1] of byte;

 TItem = record
   Value: TValue;
   Count: Int64;
   CRC32: cardinal;
 end;

 TItems = array of TItem;
...
 Dict: array [0..255] of TItems;
...
procedure TXXX.ItemAdd(Value: TValue);

 procedure _Add(id: byte; Value: TValue; crc: cardinal);
 begin
   SetLength(Dict[id], High(Dict[id])+2);
   Dict[id][High(Dict[id])].Value:= Value;
   Dict[id][High(Dict[id])].Count:= 0;
   Dict[id][High(Dict[id])].CRC32:= crc;
 end;

var
 n: int64;
 max: int64;
 crc: cardinal;
 id: byte;
begin
 id:= Value[0];
 max:= High(Dict[id]);
 crc:= GetCRC32(Value);

 if max > 0 then
 begin

   n:= 0;
   repeat
    // anee crc niaiaaa?o e ia eieeecey
    if (crc = Dict[id][n].CRC32) and
      (CompareMem(@Dict[id][n].Value, @Value, DictValueLength)) then
     begin
       Inc(Dict[id][n].Count);
       Exit;
     end;
     Inc(n);
   until n > Max;
   _Add(id, Value, crc);

 end
 else
   _Add(id, Value, crc);
end;
...

для тестов алгоритмов, скорость устраивает...



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

Текущий архив: 2013.04.14;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.012 c
15-1355873470
Дмитрий С
2012-12-19 03:31
2013.04.14
Обновление вверх по дереву.


8-1231170249
Б
2009-01-05 18:44
2013.04.14
Как загрузить GIF в Image?


15-1354877433
TUser
2012-12-07 14:50
2013.04.14
Судебные перспективы


15-1355949002
Юрий
2012-12-20 00:30
2013.04.14
С днем рождения ! 20 декабря 2012 четверг


15-1355913207
Дмитрий С
2012-12-19 14:33
2013.04.14
Открыть файл от имени администратора.