| Index: third_party/lzma/v4_65/files/Java/SevenZip/LzmaBench.java
|
| diff --git a/third_party/lzma/v4_65/files/Java/SevenZip/LzmaBench.java b/third_party/lzma/v4_65/files/Java/SevenZip/LzmaBench.java
|
| deleted file mode 100644
|
| index 397e7af5e3a984687c9039dc5dae58145a099a5d..0000000000000000000000000000000000000000
|
| --- a/third_party/lzma/v4_65/files/Java/SevenZip/LzmaBench.java
|
| +++ /dev/null
|
| @@ -1,392 +0,0 @@
|
| -package SevenZip;
|
| -
|
| -import java.io.ByteArrayOutputStream;
|
| -import java.io.ByteArrayInputStream;
|
| -import java.io.IOException;
|
| -
|
| -public class LzmaBench
|
| -{
|
| - static final int kAdditionalSize = (1 << 21);
|
| - static final int kCompressedAdditionalSize = (1 << 10);
|
| -
|
| - static class CRandomGenerator
|
| - {
|
| - int A1;
|
| - int A2;
|
| - public CRandomGenerator() { Init(); }
|
| - public void Init() { A1 = 362436069; A2 = 521288629; }
|
| - public int GetRnd()
|
| - {
|
| - return
|
| - ((A1 = 36969 * (A1 & 0xffff) + (A1 >>> 16)) << 16) ^
|
| - ((A2 = 18000 * (A2 & 0xffff) + (A2 >>> 16)));
|
| - }
|
| - };
|
| -
|
| - static class CBitRandomGenerator
|
| - {
|
| - CRandomGenerator RG = new CRandomGenerator();
|
| - int Value;
|
| - int NumBits;
|
| - public void Init()
|
| - {
|
| - Value = 0;
|
| - NumBits = 0;
|
| - }
|
| - public int GetRnd(int numBits)
|
| - {
|
| - int result;
|
| - if (NumBits > numBits)
|
| - {
|
| - result = Value & ((1 << numBits) - 1);
|
| - Value >>>= numBits;
|
| - NumBits -= numBits;
|
| - return result;
|
| - }
|
| - numBits -= NumBits;
|
| - result = (Value << numBits);
|
| - Value = RG.GetRnd();
|
| - result |= Value & (((int)1 << numBits) - 1);
|
| - Value >>>= numBits;
|
| - NumBits = 32 - numBits;
|
| - return result;
|
| - }
|
| - };
|
| -
|
| - static class CBenchRandomGenerator
|
| - {
|
| - CBitRandomGenerator RG = new CBitRandomGenerator();
|
| - int Pos;
|
| - int Rep0;
|
| -
|
| - public int BufferSize;
|
| - public byte[] Buffer = null;
|
| -
|
| - public CBenchRandomGenerator() { }
|
| - public void Set(int bufferSize)
|
| - {
|
| - Buffer = new byte[bufferSize];
|
| - Pos = 0;
|
| - BufferSize = bufferSize;
|
| - }
|
| - int GetRndBit() { return RG.GetRnd(1); }
|
| - int GetLogRandBits(int numBits)
|
| - {
|
| - int len = RG.GetRnd(numBits);
|
| - return RG.GetRnd((int)len);
|
| - }
|
| - int GetOffset()
|
| - {
|
| - if (GetRndBit() == 0)
|
| - return GetLogRandBits(4);
|
| - return (GetLogRandBits(4) << 10) | RG.GetRnd(10);
|
| - }
|
| - int GetLen1() { return RG.GetRnd(1 + (int)RG.GetRnd(2)); }
|
| - int GetLen2() { return RG.GetRnd(2 + (int)RG.GetRnd(2)); }
|
| - public void Generate()
|
| - {
|
| - RG.Init();
|
| - Rep0 = 1;
|
| - while (Pos < BufferSize)
|
| - {
|
| - if (GetRndBit() == 0 || Pos < 1)
|
| - Buffer[Pos++] = (byte)(RG.GetRnd(8));
|
| - else
|
| - {
|
| - int len;
|
| - if (RG.GetRnd(3) == 0)
|
| - len = 1 + GetLen1();
|
| - else
|
| - {
|
| - do
|
| - Rep0 = GetOffset();
|
| - while (Rep0 >= Pos);
|
| - Rep0++;
|
| - len = 2 + GetLen2();
|
| - }
|
| - for (int i = 0; i < len && Pos < BufferSize; i++, Pos++)
|
| - Buffer[Pos] = Buffer[Pos - Rep0];
|
| - }
|
| - }
|
| - }
|
| - };
|
| -
|
| - static class CrcOutStream extends java.io.OutputStream
|
| - {
|
| - public CRC CRC = new CRC();
|
| -
|
| - public void Init()
|
| - {
|
| - CRC.Init();
|
| - }
|
| - public int GetDigest()
|
| - {
|
| - return CRC.GetDigest();
|
| - }
|
| - public void write(byte[] b)
|
| - {
|
| - CRC.Update(b);
|
| - }
|
| - public void write(byte[] b, int off, int len)
|
| - {
|
| - CRC.Update(b, off, len);
|
| - }
|
| - public void write(int b)
|
| - {
|
| - CRC.UpdateByte(b);
|
| - }
|
| - };
|
| -
|
| - static class MyOutputStream extends java.io.OutputStream
|
| - {
|
| - byte[] _buffer;
|
| - int _size;
|
| - int _pos;
|
| -
|
| - public MyOutputStream(byte[] buffer)
|
| - {
|
| - _buffer = buffer;
|
| - _size = _buffer.length;
|
| - }
|
| -
|
| - public void reset()
|
| - {
|
| - _pos = 0;
|
| - }
|
| -
|
| - public void write(int b) throws IOException
|
| - {
|
| - if (_pos >= _size)
|
| - throw new IOException("Error");
|
| - _buffer[_pos++] = (byte)b;
|
| - }
|
| -
|
| - public int size()
|
| - {
|
| - return _pos;
|
| - }
|
| - };
|
| -
|
| - static class MyInputStream extends java.io.InputStream
|
| - {
|
| - byte[] _buffer;
|
| - int _size;
|
| - int _pos;
|
| -
|
| - public MyInputStream(byte[] buffer, int size)
|
| - {
|
| - _buffer = buffer;
|
| - _size = size;
|
| - }
|
| -
|
| - public void reset()
|
| - {
|
| - _pos = 0;
|
| - }
|
| -
|
| - public int read()
|
| - {
|
| - if (_pos >= _size)
|
| - return -1;
|
| - return _buffer[_pos++] & 0xFF;
|
| - }
|
| - };
|
| -
|
| - static class CProgressInfo implements ICodeProgress
|
| - {
|
| - public long ApprovedStart;
|
| - public long InSize;
|
| - public long Time;
|
| - public void Init()
|
| - { InSize = 0; }
|
| - public void SetProgress(long inSize, long outSize)
|
| - {
|
| - if (inSize >= ApprovedStart && InSize == 0)
|
| - {
|
| - Time = System.currentTimeMillis();
|
| - InSize = inSize;
|
| - }
|
| - }
|
| - }
|
| - static final int kSubBits = 8;
|
| -
|
| - static int GetLogSize(int size)
|
| - {
|
| - for (int i = kSubBits; i < 32; i++)
|
| - for (int j = 0; j < (1 << kSubBits); j++)
|
| - if (size <= ((1) << i) + (j << (i - kSubBits)))
|
| - return (i << kSubBits) + j;
|
| - return (32 << kSubBits);
|
| - }
|
| -
|
| - static long MyMultDiv64(long value, long elapsedTime)
|
| - {
|
| - long freq = 1000; // ms
|
| - long elTime = elapsedTime;
|
| - while (freq > 1000000)
|
| - {
|
| - freq >>>= 1;
|
| - elTime >>>= 1;
|
| - }
|
| - if (elTime == 0)
|
| - elTime = 1;
|
| - return value * freq / elTime;
|
| - }
|
| -
|
| - static long GetCompressRating(int dictionarySize, long elapsedTime, long size)
|
| - {
|
| - long t = GetLogSize(dictionarySize) - (18 << kSubBits);
|
| - long numCommandsForOne = 1060 + ((t * t * 10) >> (2 * kSubBits));
|
| - long numCommands = (long)(size) * numCommandsForOne;
|
| - return MyMultDiv64(numCommands, elapsedTime);
|
| - }
|
| -
|
| - static long GetDecompressRating(long elapsedTime, long outSize, long inSize)
|
| - {
|
| - long numCommands = inSize * 220 + outSize * 20;
|
| - return MyMultDiv64(numCommands, elapsedTime);
|
| - }
|
| -
|
| - static long GetTotalRating(
|
| - int dictionarySize,
|
| - long elapsedTimeEn, long sizeEn,
|
| - long elapsedTimeDe,
|
| - long inSizeDe, long outSizeDe)
|
| - {
|
| - return (GetCompressRating(dictionarySize, elapsedTimeEn, sizeEn) +
|
| - GetDecompressRating(elapsedTimeDe, inSizeDe, outSizeDe)) / 2;
|
| - }
|
| -
|
| - static void PrintValue(long v)
|
| - {
|
| - String s = "";
|
| - s += v;
|
| - for (int i = 0; i + s.length() < 6; i++)
|
| - System.out.print(" ");
|
| - System.out.print(s);
|
| - }
|
| -
|
| - static void PrintRating(long rating)
|
| - {
|
| - PrintValue(rating / 1000000);
|
| - System.out.print(" MIPS");
|
| - }
|
| -
|
| - static void PrintResults(
|
| - int dictionarySize,
|
| - long elapsedTime,
|
| - long size,
|
| - boolean decompressMode, long secondSize)
|
| - {
|
| - long speed = MyMultDiv64(size, elapsedTime);
|
| - PrintValue(speed / 1024);
|
| - System.out.print(" KB/s ");
|
| - long rating;
|
| - if (decompressMode)
|
| - rating = GetDecompressRating(elapsedTime, size, secondSize);
|
| - else
|
| - rating = GetCompressRating(dictionarySize, elapsedTime, size);
|
| - PrintRating(rating);
|
| - }
|
| -
|
| - static public int LzmaBenchmark(int numIterations, int dictionarySize) throws Exception
|
| - {
|
| - if (numIterations <= 0)
|
| - return 0;
|
| - if (dictionarySize < (1 << 18))
|
| - {
|
| - System.out.println("\nError: dictionary size for benchmark must be >= 18 (256 KB)");
|
| - return 1;
|
| - }
|
| - System.out.print("\n Compressing Decompressing\n\n");
|
| -
|
| - SevenZip.Compression.LZMA.Encoder encoder = new SevenZip.Compression.LZMA.Encoder();
|
| - SevenZip.Compression.LZMA.Decoder decoder = new SevenZip.Compression.LZMA.Decoder();
|
| -
|
| - if (!encoder.SetDictionarySize(dictionarySize))
|
| - throw new Exception("Incorrect dictionary size");
|
| -
|
| - int kBufferSize = dictionarySize + kAdditionalSize;
|
| - int kCompressedBufferSize = (kBufferSize / 2) + kCompressedAdditionalSize;
|
| -
|
| - ByteArrayOutputStream propStream = new ByteArrayOutputStream();
|
| - encoder.WriteCoderProperties(propStream);
|
| - byte[] propArray = propStream.toByteArray();
|
| - decoder.SetDecoderProperties(propArray);
|
| -
|
| - CBenchRandomGenerator rg = new CBenchRandomGenerator();
|
| -
|
| - rg.Set(kBufferSize);
|
| - rg.Generate();
|
| - CRC crc = new CRC();
|
| - crc.Init();
|
| - crc.Update(rg.Buffer, 0, rg.BufferSize);
|
| -
|
| - CProgressInfo progressInfo = new CProgressInfo();
|
| - progressInfo.ApprovedStart = dictionarySize;
|
| -
|
| - long totalBenchSize = 0;
|
| - long totalEncodeTime = 0;
|
| - long totalDecodeTime = 0;
|
| - long totalCompressedSize = 0;
|
| -
|
| - MyInputStream inStream = new MyInputStream(rg.Buffer, rg.BufferSize);
|
| -
|
| - byte[] compressedBuffer = new byte[kCompressedBufferSize];
|
| - MyOutputStream compressedStream = new MyOutputStream(compressedBuffer);
|
| - CrcOutStream crcOutStream = new CrcOutStream();
|
| - MyInputStream inputCompressedStream = null;
|
| - int compressedSize = 0;
|
| - for (int i = 0; i < numIterations; i++)
|
| - {
|
| - progressInfo.Init();
|
| - inStream.reset();
|
| - compressedStream.reset();
|
| - encoder.Code(inStream, compressedStream, -1, -1, progressInfo);
|
| - long encodeTime = System.currentTimeMillis() - progressInfo.Time;
|
| -
|
| - if (i == 0)
|
| - {
|
| - compressedSize = compressedStream.size();
|
| - inputCompressedStream = new MyInputStream(compressedBuffer, compressedSize);
|
| - }
|
| - else if (compressedSize != compressedStream.size())
|
| - throw (new Exception("Encoding error"));
|
| -
|
| - if (progressInfo.InSize == 0)
|
| - throw (new Exception("Internal ERROR 1282"));
|
| -
|
| - long decodeTime = 0;
|
| - for (int j = 0; j < 2; j++)
|
| - {
|
| - inputCompressedStream.reset();
|
| - crcOutStream.Init();
|
| -
|
| - long outSize = kBufferSize;
|
| - long startTime = System.currentTimeMillis();
|
| - if (!decoder.Code(inputCompressedStream, crcOutStream, outSize))
|
| - throw (new Exception("Decoding Error"));;
|
| - decodeTime = System.currentTimeMillis() - startTime;
|
| - if (crcOutStream.GetDigest() != crc.GetDigest())
|
| - throw (new Exception("CRC Error"));
|
| - }
|
| - long benchSize = kBufferSize - (long)progressInfo.InSize;
|
| - PrintResults(dictionarySize, encodeTime, benchSize, false, 0);
|
| - System.out.print(" ");
|
| - PrintResults(dictionarySize, decodeTime, kBufferSize, true, compressedSize);
|
| - System.out.println();
|
| -
|
| - totalBenchSize += benchSize;
|
| - totalEncodeTime += encodeTime;
|
| - totalDecodeTime += decodeTime;
|
| - totalCompressedSize += compressedSize;
|
| - }
|
| - System.out.println("---------------------------------------------------");
|
| - PrintResults(dictionarySize, totalEncodeTime, totalBenchSize, false, 0);
|
| - System.out.print(" ");
|
| - PrintResults(dictionarySize, totalDecodeTime,
|
| - kBufferSize * (long)numIterations, true, totalCompressedSize);
|
| - System.out.println(" Average");
|
| - return 0;
|
| - }
|
| -}
|
|
|