From 74af0889b955a34b31ef2b58a2ab861d44cdf0de Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Mon, 3 Oct 2016 10:16:26 +0100 Subject: [PATCH] Make PpmdProperties lazy to avoid unnecessary allocations. --- README.md | 2 +- src/SharpCompress/Compressors/PPMd/PpmdProperties.cs | 7 ------- src/SharpCompress/Compressors/PPMd/PpmdVersion.cs | 9 +++++++++ src/SharpCompress/Writers/Zip/ZipWriter.cs | 6 +++--- 4 files changed, 13 insertions(+), 11 deletions(-) create mode 100644 src/SharpCompress/Compressors/PPMd/PpmdVersion.cs diff --git a/README.md b/README.md index 83c2d35c..1b1ef1db 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ The major feature is support for non-seekable streams so large files can be proc ## Need Help? Post Issues on Github! -Check the [Supported Formats](FORMATS.md) and [basic usage.](USAGE.md) +Check the [Supported Formats](FORMATS.md) and [Basic Usage.](USAGE.md) ## A Simple Request diff --git a/src/SharpCompress/Compressors/PPMd/PpmdProperties.cs b/src/SharpCompress/Compressors/PPMd/PpmdProperties.cs index 7e02d6c0..25e90b6e 100644 --- a/src/SharpCompress/Compressors/PPMd/PpmdProperties.cs +++ b/src/SharpCompress/Compressors/PPMd/PpmdProperties.cs @@ -3,13 +3,6 @@ using SharpCompress.Converters; namespace SharpCompress.Compressors.PPMd { - public enum PpmdVersion - { - H, - H7z, - I1 - } - public class PpmdProperties { public PpmdVersion Version = PpmdVersion.I1; diff --git a/src/SharpCompress/Compressors/PPMd/PpmdVersion.cs b/src/SharpCompress/Compressors/PPMd/PpmdVersion.cs new file mode 100644 index 00000000..c4d17015 --- /dev/null +++ b/src/SharpCompress/Compressors/PPMd/PpmdVersion.cs @@ -0,0 +1,9 @@ +namespace SharpCompress.Compressors.PPMd +{ + public enum PpmdVersion + { + H, + H7z, + I1 + } +} \ No newline at end of file diff --git a/src/SharpCompress/Writers/Zip/ZipWriter.cs b/src/SharpCompress/Writers/Zip/ZipWriter.cs index 37c216b1..f93cf3cf 100644 --- a/src/SharpCompress/Writers/Zip/ZipWriter.cs +++ b/src/SharpCompress/Writers/Zip/ZipWriter.cs @@ -19,7 +19,7 @@ namespace SharpCompress.Writers.Zip { private readonly CompressionType compressionType; private readonly CompressionLevel compressionLevel; - private readonly PpmdProperties ppmdProperties = new PpmdProperties(); // Caching properties to speed up PPMd + private readonly Lazy ppmdProperties = new Lazy(() => new PpmdProperties()); // Caching properties to speed up PPMd private readonly List entries = new List(); private readonly string zipComment; private long streamPosition; @@ -252,8 +252,8 @@ namespace SharpCompress.Writers.Zip } case ZipCompressionMethod.PPMd: { - counting.Write(writer.ppmdProperties.Properties, 0, 2); - return new PpmdStream(writer.ppmdProperties, counting, true); + counting.Write(writer.ppmdProperties.Value.Properties, 0, 2); + return new PpmdStream(writer.ppmdProperties.Value, counting, true); } default: {