| Index: third_party/lzma/v4_65/files/CS/7zip/Compress/LzmaAlone/LzmaBench.cs
|
| diff --git a/third_party/lzma/v4_65/files/CS/7zip/Compress/LzmaAlone/LzmaBench.cs b/third_party/lzma/v4_65/files/CS/7zip/Compress/LzmaAlone/LzmaBench.cs
|
| deleted file mode 100644
|
| index f7b6bd016f62e05ff24c8f91a6d0787e71fc2024..0000000000000000000000000000000000000000
|
| --- a/third_party/lzma/v4_65/files/CS/7zip/Compress/LzmaAlone/LzmaBench.cs
|
| +++ /dev/null
|
| @@ -1,340 +0,0 @@
|
| -// LzmaBench.cs
|
| -
|
| -using System;
|
| -using System.IO;
|
| -
|
| -namespace SevenZip
|
| -{
|
| - /// <summary>
|
| - /// LZMA Benchmark
|
| - /// </summary>
|
| - internal abstract class LzmaBench
|
| - {
|
| - const UInt32 kAdditionalSize = (6 << 20);
|
| - const UInt32 kCompressedAdditionalSize = (1 << 10);
|
| - const UInt32 kMaxLzmaPropSize = 10;
|
| -
|
| - class CRandomGenerator
|
| - {
|
| - UInt32 A1;
|
| - UInt32 A2;
|
| - public CRandomGenerator() { Init(); }
|
| - public void Init() { A1 = 362436069; A2 = 521288629; }
|
| - public UInt32 GetRnd()
|
| - {
|
| - return
|
| - ((A1 = 36969 * (A1 & 0xffff) + (A1 >> 16)) << 16) ^
|
| - ((A2 = 18000 * (A2 & 0xffff) + (A2 >> 16)));
|
| - }
|
| - };
|
| -
|
| - class CBitRandomGenerator
|
| - {
|
| - CRandomGenerator RG = new CRandomGenerator();
|
| - UInt32 Value;
|
| - int NumBits;
|
| - public void Init()
|
| - {
|
| - Value = 0;
|
| - NumBits = 0;
|
| - }
|
| - public UInt32 GetRnd(int numBits)
|
| - {
|
| - UInt32 result;
|
| - if (NumBits > numBits)
|
| - {
|
| - result = Value & (((UInt32)1 << numBits) - 1);
|
| - Value >>= numBits;
|
| - NumBits -= numBits;
|
| - return result;
|
| - }
|
| - numBits -= NumBits;
|
| - result = (Value << numBits);
|
| - Value = RG.GetRnd();
|
| - result |= Value & (((UInt32)1 << numBits) - 1);
|
| - Value >>= numBits;
|
| - NumBits = 32 - numBits;
|
| - return result;
|
| - }
|
| - };
|
| -
|
| - class CBenchRandomGenerator
|
| - {
|
| - CBitRandomGenerator RG = new CBitRandomGenerator();
|
| - UInt32 Pos;
|
| - UInt32 Rep0;
|
| -
|
| - public UInt32 BufferSize;
|
| - public Byte[] Buffer = null;
|
| -
|
| - public CBenchRandomGenerator() { }
|
| -
|
| - public void Set(UInt32 bufferSize)
|
| - {
|
| - Buffer = new Byte[bufferSize];
|
| - Pos = 0;
|
| - BufferSize = bufferSize;
|
| - }
|
| - UInt32 GetRndBit() { return RG.GetRnd(1); }
|
| - UInt32 GetLogRandBits(int numBits)
|
| - {
|
| - UInt32 len = RG.GetRnd(numBits);
|
| - return RG.GetRnd((int)len);
|
| - }
|
| - UInt32 GetOffset()
|
| - {
|
| - if (GetRndBit() == 0)
|
| - return GetLogRandBits(4);
|
| - return (GetLogRandBits(4) << 10) | RG.GetRnd(10);
|
| - }
|
| - UInt32 GetLen1() { return RG.GetRnd(1 + (int)RG.GetRnd(2)); }
|
| - UInt32 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
|
| - {
|
| - UInt32 len;
|
| - if (RG.GetRnd(3) == 0)
|
| - len = 1 + GetLen1();
|
| - else
|
| - {
|
| - do
|
| - Rep0 = GetOffset();
|
| - while (Rep0 >= Pos);
|
| - Rep0++;
|
| - len = 2 + GetLen2();
|
| - }
|
| - for (UInt32 i = 0; i < len && Pos < BufferSize; i++, Pos++)
|
| - Buffer[Pos] = Buffer[Pos - Rep0];
|
| - }
|
| - }
|
| - }
|
| - };
|
| -
|
| - class CrcOutStream : System.IO.Stream
|
| - {
|
| - public CRC CRC = new CRC();
|
| - public void Init() { CRC.Init(); }
|
| - public UInt32 GetDigest() { return CRC.GetDigest(); }
|
| -
|
| - public override bool CanRead { get { return false; } }
|
| - public override bool CanSeek { get { return false; } }
|
| - public override bool CanWrite { get { return true; } }
|
| - public override Int64 Length { get { return 0; } }
|
| - public override Int64 Position { get { return 0; } set { } }
|
| - public override void Flush() { }
|
| - public override long Seek(long offset, SeekOrigin origin) { return 0; }
|
| - public override void SetLength(long value) { }
|
| - public override int Read(byte[] buffer, int offset, int count) { return 0; }
|
| -
|
| - public override void WriteByte(byte b)
|
| - {
|
| - CRC.UpdateByte(b);
|
| - }
|
| - public override void Write(byte[] buffer, int offset, int count)
|
| - {
|
| - CRC.Update(buffer, (uint)offset, (uint)count);
|
| - }
|
| - };
|
| -
|
| - class CProgressInfo : ICodeProgress
|
| - {
|
| - public Int64 ApprovedStart;
|
| - public Int64 InSize;
|
| - public System.DateTime Time;
|
| - public void Init() { InSize = 0; }
|
| - public void SetProgress(Int64 inSize, Int64 outSize)
|
| - {
|
| - if (inSize >= ApprovedStart && InSize == 0)
|
| - {
|
| - Time = DateTime.UtcNow;
|
| - InSize = inSize;
|
| - }
|
| - }
|
| - }
|
| - const int kSubBits = 8;
|
| -
|
| - static UInt32 GetLogSize(UInt32 size)
|
| - {
|
| - for (int i = kSubBits; i < 32; i++)
|
| - for (UInt32 j = 0; j < (1 << kSubBits); j++)
|
| - if (size <= (((UInt32)1) << i) + (j << (i - kSubBits)))
|
| - return (UInt32)(i << kSubBits) + j;
|
| - return (32 << kSubBits);
|
| - }
|
| -
|
| - static UInt64 MyMultDiv64(UInt64 value, UInt64 elapsedTime)
|
| - {
|
| - UInt64 freq = TimeSpan.TicksPerSecond;
|
| - UInt64 elTime = elapsedTime;
|
| - while (freq > 1000000)
|
| - {
|
| - freq >>= 1;
|
| - elTime >>= 1;
|
| - }
|
| - if (elTime == 0)
|
| - elTime = 1;
|
| - return value * freq / elTime;
|
| - }
|
| -
|
| - static UInt64 GetCompressRating(UInt32 dictionarySize, UInt64 elapsedTime, UInt64 size)
|
| - {
|
| - UInt64 t = GetLogSize(dictionarySize) - (18 << kSubBits);
|
| - UInt64 numCommandsForOne = 1060 + ((t * t * 10) >> (2 * kSubBits));
|
| - UInt64 numCommands = (UInt64)(size) * numCommandsForOne;
|
| - return MyMultDiv64(numCommands, elapsedTime);
|
| - }
|
| -
|
| - static UInt64 GetDecompressRating(UInt64 elapsedTime, UInt64 outSize, UInt64 inSize)
|
| - {
|
| - UInt64 numCommands = inSize * 220 + outSize * 20;
|
| - return MyMultDiv64(numCommands, elapsedTime);
|
| - }
|
| -
|
| - static UInt64 GetTotalRating(
|
| - UInt32 dictionarySize,
|
| - UInt64 elapsedTimeEn, UInt64 sizeEn,
|
| - UInt64 elapsedTimeDe,
|
| - UInt64 inSizeDe, UInt64 outSizeDe)
|
| - {
|
| - return (GetCompressRating(dictionarySize, elapsedTimeEn, sizeEn) +
|
| - GetDecompressRating(elapsedTimeDe, inSizeDe, outSizeDe)) / 2;
|
| - }
|
| -
|
| - static void PrintValue(UInt64 v)
|
| - {
|
| - string s = v.ToString();
|
| - for (int i = 0; i + s.Length < 6; i++)
|
| - System.Console.Write(" ");
|
| - System.Console.Write(s);
|
| - }
|
| -
|
| - static void PrintRating(UInt64 rating)
|
| - {
|
| - PrintValue(rating / 1000000);
|
| - System.Console.Write(" MIPS");
|
| - }
|
| -
|
| - static void PrintResults(
|
| - UInt32 dictionarySize,
|
| - UInt64 elapsedTime,
|
| - UInt64 size,
|
| - bool decompressMode, UInt64 secondSize)
|
| - {
|
| - UInt64 speed = MyMultDiv64(size, elapsedTime);
|
| - PrintValue(speed / 1024);
|
| - System.Console.Write(" KB/s ");
|
| - UInt64 rating;
|
| - if (decompressMode)
|
| - rating = GetDecompressRating(elapsedTime, size, secondSize);
|
| - else
|
| - rating = GetCompressRating(dictionarySize, elapsedTime, size);
|
| - PrintRating(rating);
|
| - }
|
| -
|
| - static public int LzmaBenchmark(Int32 numIterations, UInt32 dictionarySize)
|
| - {
|
| - if (numIterations <= 0)
|
| - return 0;
|
| - if (dictionarySize < (1 << 18))
|
| - {
|
| - System.Console.WriteLine("\nError: dictionary size for benchmark must be >= 19 (512 KB)");
|
| - return 1;
|
| - }
|
| - System.Console.Write("\n Compressing Decompressing\n\n");
|
| -
|
| - Compression.LZMA.Encoder encoder = new Compression.LZMA.Encoder();
|
| - Compression.LZMA.Decoder decoder = new Compression.LZMA.Decoder();
|
| -
|
| -
|
| - CoderPropID[] propIDs =
|
| - {
|
| - CoderPropID.DictionarySize,
|
| - };
|
| - object[] properties =
|
| - {
|
| - (Int32)(dictionarySize),
|
| - };
|
| -
|
| - UInt32 kBufferSize = dictionarySize + kAdditionalSize;
|
| - UInt32 kCompressedBufferSize = (kBufferSize / 2) + kCompressedAdditionalSize;
|
| -
|
| - encoder.SetCoderProperties(propIDs, properties);
|
| - System.IO.MemoryStream propStream = new System.IO.MemoryStream();
|
| - encoder.WriteCoderProperties(propStream);
|
| - byte[] propArray = propStream.ToArray();
|
| -
|
| - 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;
|
| -
|
| - UInt64 totalBenchSize = 0;
|
| - UInt64 totalEncodeTime = 0;
|
| - UInt64 totalDecodeTime = 0;
|
| - UInt64 totalCompressedSize = 0;
|
| -
|
| - MemoryStream inStream = new MemoryStream(rg.Buffer, 0, (int)rg.BufferSize);
|
| - MemoryStream compressedStream = new MemoryStream((int)kCompressedBufferSize);
|
| - CrcOutStream crcOutStream = new CrcOutStream();
|
| - for (Int32 i = 0; i < numIterations; i++)
|
| - {
|
| - progressInfo.Init();
|
| - inStream.Seek(0, SeekOrigin.Begin);
|
| - compressedStream.Seek(0, SeekOrigin.Begin);
|
| - encoder.Code(inStream, compressedStream, -1, -1, progressInfo);
|
| - TimeSpan sp2 = DateTime.UtcNow - progressInfo.Time;
|
| - UInt64 encodeTime = (UInt64)sp2.Ticks;
|
| -
|
| - long compressedSize = compressedStream.Position;
|
| - if (progressInfo.InSize == 0)
|
| - throw (new Exception("Internal ERROR 1282"));
|
| -
|
| - UInt64 decodeTime = 0;
|
| - for (int j = 0; j < 2; j++)
|
| - {
|
| - compressedStream.Seek(0, SeekOrigin.Begin);
|
| - crcOutStream.Init();
|
| -
|
| - decoder.SetDecoderProperties(propArray);
|
| - UInt64 outSize = kBufferSize;
|
| - System.DateTime startTime = DateTime.UtcNow;
|
| - decoder.Code(compressedStream, crcOutStream, 0, (Int64)outSize, null);
|
| - TimeSpan sp = (DateTime.UtcNow - startTime);
|
| - decodeTime = (ulong)sp.Ticks;
|
| - if (crcOutStream.GetDigest() != crc.GetDigest())
|
| - throw (new Exception("CRC Error"));
|
| - }
|
| - UInt64 benchSize = kBufferSize - (UInt64)progressInfo.InSize;
|
| - PrintResults(dictionarySize, encodeTime, benchSize, false, 0);
|
| - System.Console.Write(" ");
|
| - PrintResults(dictionarySize, decodeTime, kBufferSize, true, (ulong)compressedSize);
|
| - System.Console.WriteLine();
|
| -
|
| - totalBenchSize += benchSize;
|
| - totalEncodeTime += encodeTime;
|
| - totalDecodeTime += decodeTime;
|
| - totalCompressedSize += (ulong)compressedSize;
|
| - }
|
| - System.Console.WriteLine("---------------------------------------------------");
|
| - PrintResults(dictionarySize, totalEncodeTime, totalBenchSize, false, 0);
|
| - System.Console.Write(" ");
|
| - PrintResults(dictionarySize, totalDecodeTime,
|
| - kBufferSize * (UInt64)numIterations, true, totalCompressedSize);
|
| - System.Console.WriteLine(" Average");
|
| - return 0;
|
| - }
|
| - }
|
| -}
|
|
|