{ Тестирование алгоритма Хаффмана Cжатие буфера в ОЗУ. } {--------------------------------------------------------------------------- (c) Copyright Aleksandrov O.E., 2000 Molecular Physics department, USTU, Ekaterinsburg, K-2, 620002, RUSSIA phone 75-47-15 E-mail: aleks@dpt.ustu.ru (c) Copyright Александров О.Е., 1999 620002, Екатеринбург, К-2, УГТУ, Кафедра молекулярной физики тел. 75-47-15 E-mail: aleks@dpt.ustu.ru ----------------------------------------------------------------------------} {$Define Seg16} {$Define Asm} program HuffmanTest; USES uMiscFun, HufTypes, HuffBase, HuffmanE; const cBufLength=64000; cPassCount=55*1; type tTestArrayIndex=1..cBufLength+128; tTestArray=array[tTestArrayIndex] of tByte; tPTestArray=^tTestArray; var Huffman:tHuffman; OBuf0,OBuf1,OBuf2:tPTestArray; OSize0:tBufferIndex; OSize1,OSize2:tBufferIndex; OptSize:tBufferIndex; eq,Encoded:boolean; j:tTestArrayIndex; Cnt:word; x,xMax:tByte; i,iMax:word; t0:tTimerTiks; dt:tTimerDecimalTiks; BytesPerSeconds:longint; BEGIN writeln; write('Программа HuffmanTest запущена '); {$IfDef MsDOS} write('(real mode)'); {$Else} write('(protected mode)'); {$EndIF} writeln('...'); writeln; New(OBuf0); New(OBuf1); New(OBuf2); { HuffBase.ProcTypeSet(pAll,ptAdvanced);} { HuffBase.ProcTypeSet(pDecode, ptAdvanced);} { HuffBase.ProcTypeSet(pEncode, ptSimple); HuffBase.ProcTypeSet(pBuildTree,ptSimple); HuffBase.ProcTypeSet(pCountBytes,ptSimple);} write('Неоптимальны:'); if ProcTypeGet(pDecode)<>ptAdvancedAsm then begin write(' Decode'); end; if ProcTypeGet(pEncode)<>ptSimpleAsm then begin write(' Encode'); end; if ProcTypeGet(pBuildTree)<>ptSimpleAsm then begin write(' BuildTree'); end; if ProcTypeGet(pCountBytes)<>ptSimpleAsm then begin write(' CountBytes'); end; writeln; write(' Генерация массива...'); Randomize; j:=Low(j); xMax:=Ord(High(OBuf0^[1])); { Генерация случайного массива с искуственным нарушением равномерной частоты } while j<=(cBufLength) do begin x:=Random(xMax); if (100