Browse Source

Remove GC, add MethodImpl, use Buffer

pull/1574/head
James Jackson-South 6 years ago
parent
commit
76fe7eba91
  1. 24
      Directory.Build.props
  2. 10
      src/ImageSharp/Common/Helpers/InliningOptions.cs
  3. 2
      src/ImageSharp/Formats/Png/Zlib/Deflater.cs
  4. 5
      src/ImageSharp/Formats/Png/Zlib/DeflaterEngine.cs
  5. 5
      src/ImageSharp/Formats/Png/Zlib/DeflaterHuffman.cs
  6. 2
      src/ImageSharp/Formats/Png/Zlib/DeflaterPendingBuffer.cs

24
Directory.Build.props

@ -31,21 +31,21 @@
<!-- <!--
https://apisof.net/ https://apisof.net/
+===================+=======+==========+=====================+=============+=================+====================+==============+ +===================+=======+==========+=====================+=============+=================+====================+==============+=========+
| SUPPORTS | MATHF | HASHCODE | EXTENDED_INTRINSICS | SPAN_STREAM | ENCODING_STRING | RUNTIME_INTRINSICS | CODECOVERAGE | | SUPPORTS | MATHF | HASHCODE | EXTENDED_INTRINSICS | SPAN_STREAM | ENCODING_STRING | RUNTIME_INTRINSICS | CODECOVERAGE | HOTPATH |
+===================+=======+==========+=====================+=============+=================+====================+==============+ +===================+=======+==========+=====================+=============+=================+====================+==============+=========|
| netcoreapp3.1 | Y | Y | Y | Y | Y | Y | Y | | netcoreapp3.1 | Y | Y | Y | Y | Y | Y | Y | Y |
| netcoreapp2.1 | Y | Y | Y | Y | Y | N | Y | | netcoreapp2.1 | Y | Y | Y | Y | Y | N | Y | N |
| netcoreapp2.0 | Y | N | N | N | N | N | Y | | netcoreapp2.0 | Y | N | N | N | N | N | Y | N |
| netstandard2.1 | Y | Y | N | Y | Y | N | Y | | netstandard2.1 | Y | Y | N | Y | Y | N | Y | N |
| netstandard2.0 | N | N | N | N | N | N | Y | | netstandard2.0 | N | N | N | N | N | N | Y | N |
| netstandard1.3 | N | N | N | N | N | N | N | | netstandard1.3 | N | N | N | N | N | N | N | N |
| net472 | N | N | Y | N | N | N | Y | | net472 | N | N | Y | N | N | N | Y | N |
+===================+=======+==========+=====================+=============+=================+====================+==============+ +===================+=======+==========+=====================+=============+=================+====================+==============+=========|
--> -->
<PropertyGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'"> <PropertyGroup Condition="'$(TargetFramework)' == 'netcoreapp3.1'">
<DefineConstants>$(DefineConstants);SUPPORTS_MATHF;SUPPORTS_HASHCODE;SUPPORTS_EXTENDED_INTRINSICS;SUPPORTS_SPAN_STREAM;SUPPORTS_ENCODING_STRING;SUPPORTS_RUNTIME_INTRINSICS;SUPPORTS_CODECOVERAGE</DefineConstants> <DefineConstants>$(DefineConstants);SUPPORTS_MATHF;SUPPORTS_HASHCODE;SUPPORTS_EXTENDED_INTRINSICS;SUPPORTS_SPAN_STREAM;SUPPORTS_ENCODING_STRING;SUPPORTS_RUNTIME_INTRINSICS;SUPPORTS_CODECOVERAGE;SUPPORTS_HOTPATH</DefineConstants>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)' == 'netcoreapp2.1'"> <PropertyGroup Condition="'$(TargetFramework)' == 'netcoreapp2.1'">
<DefineConstants>$(DefineConstants);SUPPORTS_MATHF;SUPPORTS_HASHCODE;SUPPORTS_EXTENDED_INTRINSICS;SUPPORTS_SPAN_STREAM;SUPPORTS_ENCODING_STRING;SUPPORTS_CODECOVERAGE</DefineConstants> <DefineConstants>$(DefineConstants);SUPPORTS_MATHF;SUPPORTS_HASHCODE;SUPPORTS_EXTENDED_INTRINSICS;SUPPORTS_SPAN_STREAM;SUPPORTS_ENCODING_STRING;SUPPORTS_CODECOVERAGE</DefineConstants>

10
src/ImageSharp/Common/Helpers/InliningOptions.cs

@ -1,4 +1,4 @@
// Copyright (c) Six Labors and contributors. // Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0. // Licensed under the Apache License, Version 2.0.
// Uncomment this for verbose profiler results. DO NOT PUSH TO MAIN! // Uncomment this for verbose profiler results. DO NOT PUSH TO MAIN!
@ -13,10 +13,16 @@ namespace SixLabors.ImageSharp
internal static class InliningOptions internal static class InliningOptions
{ {
#if PROFILING #if PROFILING
public const MethodImplOptions HotPath = MethodImplOptions.NoInlining;
public const MethodImplOptions ShortMethod = MethodImplOptions.NoInlining; public const MethodImplOptions ShortMethod = MethodImplOptions.NoInlining;
#else #else
#if SUPPORTS_HOTPATH
public const MethodImplOptions HotPath = MethodImplOptions.AggressiveOptimization;
#else
public const MethodImplOptions HotPath = MethodImplOptions.AggressiveInlining;
#endif
public const MethodImplOptions ShortMethod = MethodImplOptions.AggressiveInlining; public const MethodImplOptions ShortMethod = MethodImplOptions.AggressiveInlining;
#endif #endif
public const MethodImplOptions ColdPath = MethodImplOptions.NoInlining; public const MethodImplOptions ColdPath = MethodImplOptions.NoInlining;
} }
} }

2
src/ImageSharp/Formats/Png/Zlib/Deflater.cs

@ -288,8 +288,6 @@ namespace SixLabors.ImageSharp.Formats.Png.Zlib
this.engine = null; this.engine = null;
this.isDisposed = true; this.isDisposed = true;
} }
GC.SuppressFinalize(this);
} }
} }
} }

5
src/ImageSharp/Formats/Png/Zlib/DeflaterEngine.cs

@ -362,7 +362,7 @@ namespace SixLabors.ImageSharp.Formats.Png.Zlib
more = this.inputEnd - this.inputOff; more = this.inputEnd - this.inputOff;
} }
Array.Copy(this.inputBuf, this.inputOff, this.window, this.strstart + this.lookahead, more); Buffer.BlockCopy(this.inputBuf, this.inputOff, this.window, this.strstart + this.lookahead, more);
this.inputOff += more; this.inputOff += more;
this.lookahead += more; this.lookahead += more;
@ -397,8 +397,6 @@ namespace SixLabors.ImageSharp.Formats.Png.Zlib
this.isDisposed = true; this.isDisposed = true;
} }
GC.SuppressFinalize(this);
} }
[MethodImpl(InliningOptions.ShortMethod)] [MethodImpl(InliningOptions.ShortMethod)]
@ -464,6 +462,7 @@ namespace SixLabors.ImageSharp.Formats.Png.Zlib
/// </summary> /// </summary>
/// <param name="curMatch">The current match.</param> /// <param name="curMatch">The current match.</param>
/// <returns>True if a match greater than the minimum length is found</returns> /// <returns>True if a match greater than the minimum length is found</returns>
[MethodImpl(InliningOptions.HotPath)]
private bool FindLongestMatch(int curMatch) private bool FindLongestMatch(int curMatch)
{ {
int match; int match;

5
src/ImageSharp/Formats/Png/Zlib/DeflaterHuffman.cs

@ -413,8 +413,6 @@ namespace SixLabors.ImageSharp.Formats.Png.Zlib
this.distTree = null; this.distTree = null;
this.isDisposed = true; this.isDisposed = true;
} }
GC.SuppressFinalize(this);
} }
[MethodImpl(InliningOptions.ShortMethod)] [MethodImpl(InliningOptions.ShortMethod)]
@ -553,6 +551,7 @@ namespace SixLabors.ImageSharp.Formats.Png.Zlib
} }
} }
[MethodImpl(InliningOptions.HotPath)]
public void BuildTree() public void BuildTree()
{ {
int numSymbols = this.elementCount; int numSymbols = this.elementCount;
@ -964,8 +963,6 @@ namespace SixLabors.ImageSharp.Formats.Png.Zlib
this.isDisposed = true; this.isDisposed = true;
} }
GC.SuppressFinalize(this);
} }
} }
} }

2
src/ImageSharp/Formats/Png/Zlib/DeflaterPendingBuffer.cs

@ -172,8 +172,6 @@ namespace SixLabors.ImageSharp.Formats.Png.Zlib
this.bufferMemoryOwner = null; this.bufferMemoryOwner = null;
this.isDisposed = true; this.isDisposed = true;
} }
GC.SuppressFinalize(this);
} }
} }
} }

Loading…
Cancel
Save