From fa1e77396017c7b69b5ad86aa3b6b752e652c59d Mon Sep 17 00:00:00 2001 From: Jason Nelson Date: Fri, 31 Jul 2020 16:55:07 -0700 Subject: [PATCH] Eliminate two allocations in Crc32 --- src/SharpCompress/Compressors/Deflate/CRC32.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/SharpCompress/Compressors/Deflate/CRC32.cs b/src/SharpCompress/Compressors/Deflate/CRC32.cs index d1596e12..d5e650c0 100644 --- a/src/SharpCompress/Compressors/Deflate/CRC32.cs +++ b/src/SharpCompress/Compressors/Deflate/CRC32.cs @@ -189,7 +189,7 @@ namespace SharpCompress.Compressors.Deflate // pre-initialize the crc table for speed of lookup. - private uint gf2_matrix_times(uint[] matrix, uint vec) + private uint gf2_matrix_times(ReadOnlySpan matrix, uint vec) { uint sum = 0; int i = 0; @@ -205,7 +205,7 @@ namespace SharpCompress.Compressors.Deflate return sum; } - private void gf2_matrix_square(uint[] square, uint[] mat) + private void gf2_matrix_square(Span square, Span mat) { for (int i = 0; i < 32; i++) { @@ -225,8 +225,8 @@ namespace SharpCompress.Compressors.Deflate /// the length of data the CRC value was calculated on public void Combine(int crc, int length) { - var even = new uint[32]; // even-power-of-two zeros operator - var odd = new uint[32]; // odd-power-of-two zeros operator + Span even = stackalloc uint[32]; // even-power-of-two zeros operator + Span odd = stackalloc uint[32]; // odd-power-of-two zeros operator if (length == 0) {