private static void Test(string directory, ILZ4Compressor compressor, ILZ4Decompressor decompressor) { var w = new Stopwatch(); var dw = new Stopwatch(); long compressedTotal = 0; long uncompressedTotal = 0; for(int j=0;j<10;j++) foreach (var bytes in Read(directory)) { uncompressedTotal += bytes.Length; byte[] compressed = new byte[compressor.CalculateMaxCompressedLength(bytes.Length)]; w.Start(); int compressedLength = compressor.Compress(bytes, compressed); compressedTotal += compressedLength; w.Stop(); byte[] uncompressed = new byte[bytes.Length]; dw.Start(); decompressor.DecompressKnownSize(compressed, uncompressed, uncompressed.Length); dw.Stop(); for (int i = 0; i < uncompressed.Length; i++) { if (uncompressed[i] != bytes[i]) throw new Exception("Original bytes and decompressed bytes differ starting at byte " + i); } } Console.WriteLine("Ratio = " + compressedTotal * 1.0 / uncompressedTotal); Console.WriteLine("Compression Time (MB / sec) = " + uncompressedTotal / 1024.0 / 1024.0 / w.Elapsed.TotalSeconds); Console.WriteLine("Uncompression Time (MB / sec) = " + uncompressedTotal / 1024.0 / 1024.0 / dw.Elapsed.TotalSeconds); }
private static unsafe void TestEmpty(ILZ4Compressor compressor, ILZ4Decompressor decompressor) { var bytes = new byte[50]; byte[] dst = compressor.Compress(bytes); var result = decompressor.Decompress(dst); }
public byte[] Compress(byte[] buffer) { byte[] compressed = compressor.Compress(buffer); Serializer serializer = new Serializer(); serializer.Write((short)compressed.Length); serializer.Write((short)buffer.Length); serializer.Write(compressed); return(serializer.GetBytes()); }
/// <summary> /// Compresses the data /// </summary> /// <param name="data">The data to compress</param> /// <param name="offset">The position where the data begins</param> /// <param name="length">The length to compress</param> /// <returns></returns> public override byte[] Encode(ref byte[] data, ref uint offset, ref uint length, ref PacketHeader packetHeader) { byte[] compressed = new byte[Lz4Compressor.CalculateMaxCompressedLength((int)length)]; int CompressedSize = Lz4Compressor.Compress(data, (int)offset, (int)length, compressed, 0); if (CompressedSize < length) { offset = 0; length = (uint)CompressedSize; return(compressed); } return(data); }
private static void TestUnknownSize(string directory, ILZ4Compressor compressor, ILZ4Decompressor decompressor) { foreach (var file in Directory.GetFiles(directory)) { var bytes = File.ReadAllBytes(file); var compressed = compressor.Compress(bytes); var decompressed = decompressor.Decompress(compressed); if (!bytes.SequenceEqual(decompressed)) { throw new Exception("Compressing/Decompressing " + file + " failed."); } } }
public void SendPacket(IPacketOut packetTemplate) { MemoryStream stream = new MemoryStream(); PacketWriter writer = new PacketWriter(stream); packetTemplate.Serialize(writer); byte[] uncompressed = stream.ToArray(); byte[] compressed = compressor.Compress(uncompressed); Packet packet = Packet.Create(); packet.Writer.Write((short)compressed.Length); packet.Writer.Write((short)uncompressed.Length); packet.Writer.Write(compressed); Send(packet.Data); }
public void CompressData() { if (compressor != null && frameData != null) { byte[] compressBuffer = new byte[frameData.Length + compHeaderSize]; compressBuffer[0] = (byte)encType; byte[] elemBytes = System.BitConverter.GetBytes(frameData.Length); elemBytes.CopyTo(compressBuffer, 1); int compSize = compressor.Compress(frameData, 0, frameData.Length, compressBuffer, compHeaderSize) + compHeaderSize; encType = FrameEncodeType.Compressed; frameData = new byte[compSize]; System.Buffer.BlockCopy(compressBuffer, 0, frameData, 0, compSize); compressBuffer = null; } }
private static void Test(string directory, ILZ4Compressor compressor, ILZ4Decompressor decompressor) { var w = new Stopwatch(); var dw = new Stopwatch(); long compressedTotal = 0; long uncompressedTotal = 0; for (int j = 0; j < 10; j++) { foreach (var bytes in Read(directory)) { uncompressedTotal += bytes.Length; byte[] compressed = new byte[compressor.CalculateMaxCompressedLength(bytes.Length)]; w.Start(); int compressedLength = compressor.Compress(bytes, compressed); compressedTotal += compressedLength; w.Stop(); byte[] uncompressed = new byte[bytes.Length]; dw.Start(); decompressor.DecompressKnownSize(compressed, uncompressed, uncompressed.Length); dw.Stop(); for (int i = 0; i < uncompressed.Length; i++) { if (uncompressed[i] != bytes[i]) { throw new Exception("Original bytes and decompressed bytes differ starting at byte " + i); } } } } Console.WriteLine("Ratio = " + compressedTotal * 1.0 / uncompressedTotal); Console.WriteLine("Compression Time (MB / sec) = " + uncompressedTotal / 1024.0 / 1024.0 / w.Elapsed.TotalSeconds); Console.WriteLine("Uncompression Time (MB / sec) = " + uncompressedTotal / 1024.0 / 1024.0 / dw.Elapsed.TotalSeconds); }
private static void TestUnknownSize(string directory, ILZ4Compressor compressor, ILZ4Decompressor decompressor) { foreach (var file in Directory.GetFiles(directory)) { var bytes = File.ReadAllBytes(file); var compressed = compressor.Compress(bytes); var decompressed = decompressor.Decompress(compressed); if (!bytes.SequenceEqual(decompressed)) throw new Exception("Compressing/Decompressing " + file + " failed."); } }
public byte[] Compress(byte[] data) { return(_compressor.Compress(data)); }