mirror of https://github.com/SixLabors/ImageSharp
Browse Source
#12 Support multi strip encoding. Improve performance and memory usage.pull/1570/head
committed by
GitHub
49 changed files with 1106 additions and 1127 deletions
@ -0,0 +1,63 @@ |
|||
// Copyright (c) Six Labors.
|
|||
// Licensed under the Apache License, Version 2.0.
|
|||
|
|||
using System; |
|||
using System.IO; |
|||
using SixLabors.ImageSharp.Compression.Zlib; |
|||
using SixLabors.ImageSharp.Formats.Experimental.Tiff.Constants; |
|||
using SixLabors.ImageSharp.Memory; |
|||
|
|||
namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression.Compressors |
|||
{ |
|||
internal class DeflateCompressor : TiffBaseCompressor |
|||
{ |
|||
private readonly DeflateCompressionLevel compressionLevel; |
|||
|
|||
private readonly MemoryStream memoryStream = new MemoryStream(); |
|||
|
|||
public DeflateCompressor(Stream output, MemoryAllocator allocator, int width, int bitsPerPixel, TiffPredictor predictor, DeflateCompressionLevel compressionLevel) |
|||
: base(output, allocator, width, bitsPerPixel, predictor) |
|||
=> this.compressionLevel = compressionLevel; |
|||
|
|||
/// <inheritdoc/>
|
|||
public override TiffEncoderCompression Method => TiffEncoderCompression.Deflate; |
|||
|
|||
/// <inheritdoc/>
|
|||
public override void Initialize(int rowsPerStrip) |
|||
{ |
|||
} |
|||
|
|||
/// <inheritdoc/>
|
|||
public override void CompressStrip(Span<byte> rows, int height) |
|||
{ |
|||
this.memoryStream.Seek(0, SeekOrigin.Begin); |
|||
using var stream = new ZlibDeflateStream(this.Allocator, this.memoryStream, this.compressionLevel); |
|||
|
|||
if (this.Predictor == TiffPredictor.Horizontal) |
|||
{ |
|||
HorizontalPredictor.ApplyHorizontalPrediction(rows, this.BytesPerRow, this.BitsPerPixel); |
|||
} |
|||
|
|||
stream.Write(rows); |
|||
|
|||
stream.Flush(); |
|||
stream.Dispose(); |
|||
|
|||
int size = (int)this.memoryStream.Position; |
|||
|
|||
#if !NETSTANDARD1_3
|
|||
byte[] buffer = this.memoryStream.GetBuffer(); |
|||
this.Output.Write(buffer, 0, size); |
|||
#else
|
|||
this.memoryStream.SetLength(size); |
|||
this.memoryStream.Position = 0; |
|||
this.memoryStream.CopyTo(this.Output); |
|||
#endif
|
|||
} |
|||
|
|||
/// <inheritdoc/>
|
|||
protected override void Dispose(bool disposing) |
|||
{ |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,40 @@ |
|||
// Copyright (c) Six Labors.
|
|||
// Licensed under the Apache License, Version 2.0.
|
|||
|
|||
using System; |
|||
using System.IO; |
|||
using SixLabors.ImageSharp.Formats.Experimental.Tiff.Constants; |
|||
using SixLabors.ImageSharp.Memory; |
|||
|
|||
namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression.Compressors |
|||
{ |
|||
internal class LzwCompressor : TiffBaseCompressor |
|||
{ |
|||
private TiffLzwEncoder lzwEncoder; |
|||
|
|||
public LzwCompressor(Stream output, MemoryAllocator allocator, int width, int bitsPerPixel, TiffPredictor predictor) |
|||
: base(output, allocator, width, bitsPerPixel, predictor) |
|||
{ |
|||
} |
|||
|
|||
/// <inheritdoc/>
|
|||
public override TiffEncoderCompression Method => TiffEncoderCompression.Lzw; |
|||
|
|||
/// <inheritdoc/>
|
|||
public override void Initialize(int rowsPerStrip) => this.lzwEncoder = new TiffLzwEncoder(this.Allocator); |
|||
|
|||
/// <inheritdoc/>
|
|||
public override void CompressStrip(Span<byte> rows, int height) |
|||
{ |
|||
if (this.Predictor == TiffPredictor.Horizontal) |
|||
{ |
|||
HorizontalPredictor.ApplyHorizontalPrediction(rows, this.BytesPerRow, this.BitsPerPixel); |
|||
} |
|||
|
|||
this.lzwEncoder.Encode(rows, this.Output); |
|||
} |
|||
|
|||
/// <inheritdoc/>
|
|||
protected override void Dispose(bool disposing) => this.lzwEncoder?.Dispose(); |
|||
} |
|||
} |
|||
@ -0,0 +1,32 @@ |
|||
// Copyright (c) Six Labors.
|
|||
// Licensed under the Apache License, Version 2.0.
|
|||
|
|||
using System; |
|||
using System.IO; |
|||
|
|||
namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression.Compressors |
|||
{ |
|||
internal class NoCompressor : TiffBaseCompressor |
|||
{ |
|||
public NoCompressor(Stream output) |
|||
: base(output, default, default, default) |
|||
{ |
|||
} |
|||
|
|||
/// <inheritdoc/>
|
|||
public override TiffEncoderCompression Method => TiffEncoderCompression.None; |
|||
|
|||
/// <inheritdoc/>
|
|||
public override void Initialize(int rowsPerStrip) |
|||
{ |
|||
} |
|||
|
|||
/// <inheritdoc/>
|
|||
public override void CompressStrip(Span<byte> rows, int height) => this.Output.Write(rows); |
|||
|
|||
/// <inheritdoc/>
|
|||
protected override void Dispose(bool disposing) |
|||
{ |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,47 @@ |
|||
// Copyright (c) Six Labors.
|
|||
// Licensed under the Apache License, Version 2.0.
|
|||
|
|||
using System; |
|||
using System.IO; |
|||
using SixLabors.ImageSharp.Memory; |
|||
|
|||
namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression.Compressors |
|||
{ |
|||
internal class PackBitsCompressor : TiffBaseCompressor |
|||
{ |
|||
private IManagedByteBuffer pixelData; |
|||
|
|||
public PackBitsCompressor(Stream output, MemoryAllocator allocator, int width, int bitsPerPixel) |
|||
: base(output, allocator, width, bitsPerPixel) |
|||
{ |
|||
} |
|||
|
|||
/// <inheritdoc/>
|
|||
public override TiffEncoderCompression Method => TiffEncoderCompression.PackBits; |
|||
|
|||
/// <inheritdoc/>
|
|||
public override void Initialize(int rowsPerStrip) |
|||
{ |
|||
int additionalBytes = ((this.BytesPerRow + 126) / 127) + 1; |
|||
this.pixelData = this.Allocator.AllocateManagedByteBuffer(this.BytesPerRow + additionalBytes); |
|||
} |
|||
|
|||
/// <inheritdoc/>
|
|||
public override void CompressStrip(Span<byte> rows, int height) |
|||
{ |
|||
DebugGuard.IsTrue(rows.Length % height == 0, "Invalid height"); |
|||
DebugGuard.IsTrue(this.BytesPerRow == rows.Length / height, "The widths must match"); |
|||
|
|||
Span<byte> span = this.pixelData.GetSpan(); |
|||
for (int i = 0; i < height; i++) |
|||
{ |
|||
Span<byte> row = rows.Slice(i * this.BytesPerRow, this.BytesPerRow); |
|||
int size = PackBitsWriter.PackBits(row, span); |
|||
this.Output.Write(span.Slice(0, size)); |
|||
} |
|||
} |
|||
|
|||
/// <inheritdoc/>
|
|||
protected override void Dispose(bool disposing) => this.pixelData?.Dispose(); |
|||
} |
|||
} |
|||
@ -0,0 +1,62 @@ |
|||
// Copyright (c) Six Labors.
|
|||
// Licensed under the Apache License, Version 2.0.
|
|||
|
|||
using System; |
|||
using SixLabors.ImageSharp.Formats.Experimental.Tiff.Constants; |
|||
using SixLabors.ImageSharp.Memory; |
|||
|
|||
namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression |
|||
{ |
|||
internal abstract class TiffBaseCompression : IDisposable |
|||
{ |
|||
private bool isDisposed; |
|||
|
|||
protected TiffBaseCompression(MemoryAllocator allocator, int width, int bitsPerPixel, TiffPredictor predictor = TiffPredictor.None) |
|||
{ |
|||
this.Allocator = allocator; |
|||
this.Width = width; |
|||
this.BitsPerPixel = bitsPerPixel; |
|||
this.Predictor = predictor; |
|||
this.BytesPerRow = ((width * bitsPerPixel) + 7) / 8; |
|||
} |
|||
|
|||
/// <summary>
|
|||
/// Gets the image width.
|
|||
/// </summary>
|
|||
public int Width { get; } |
|||
|
|||
/// <summary>
|
|||
/// Gets the bits per pixel.
|
|||
/// </summary>
|
|||
public int BitsPerPixel { get; } |
|||
|
|||
/// <summary>
|
|||
/// Gets the bytes per row.
|
|||
/// </summary>
|
|||
public int BytesPerRow { get; } |
|||
|
|||
/// <summary>
|
|||
/// Gets the predictor to use. Should only be used with deflate or lzw compression.
|
|||
/// </summary>
|
|||
public TiffPredictor Predictor { get; } |
|||
|
|||
/// <summary>
|
|||
/// Gets the memory allocator.
|
|||
/// </summary>
|
|||
protected MemoryAllocator Allocator { get; } |
|||
|
|||
/// <inheritdoc />
|
|||
public void Dispose() |
|||
{ |
|||
if (this.isDisposed) |
|||
{ |
|||
return; |
|||
} |
|||
|
|||
this.isDisposed = true; |
|||
this.Dispose(true); |
|||
} |
|||
|
|||
protected abstract void Dispose(bool disposing); |
|||
} |
|||
} |
|||
@ -0,0 +1,48 @@ |
|||
// Copyright (c) Six Labors.
|
|||
// Licensed under the Apache License, Version 2.0.
|
|||
|
|||
using System; |
|||
using System.IO; |
|||
using SixLabors.ImageSharp.Formats.Experimental.Tiff.Constants; |
|||
using SixLabors.ImageSharp.Memory; |
|||
|
|||
namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression |
|||
{ |
|||
internal abstract class TiffBaseCompressor : TiffBaseCompression |
|||
{ |
|||
/// <summary>
|
|||
/// Initializes a new instance of the <see cref="TiffBaseCompressor"/> class.
|
|||
/// </summary>
|
|||
/// <param name="output">The output stream to write the compressed image to.</param>
|
|||
/// <param name="allocator">The memory allocator.</param>
|
|||
/// <param name="width">The image width.</param>
|
|||
/// <param name="bitsPerPixel">Bits per pixel.</param>
|
|||
/// <param name="predictor">The predictor to use (should only be used with deflate or lzw compression). Defaults to none.</param>
|
|||
protected TiffBaseCompressor(Stream output, MemoryAllocator allocator, int width, int bitsPerPixel, TiffPredictor predictor = TiffPredictor.None) |
|||
: base(allocator, width, bitsPerPixel, predictor) |
|||
=> this.Output = output; |
|||
|
|||
/// <summary>
|
|||
/// Gets the compression method to use.
|
|||
/// </summary>
|
|||
public abstract TiffEncoderCompression Method { get; } |
|||
|
|||
/// <summary>
|
|||
/// Gets the output stream to write the compressed image to.
|
|||
/// </summary>
|
|||
public Stream Output { get; } |
|||
|
|||
/// <summary>
|
|||
/// Does any initialization required for the compression.
|
|||
/// </summary>
|
|||
/// <param name="rowsPerStrip">The number of rows per strip.</param>
|
|||
public abstract void Initialize(int rowsPerStrip); |
|||
|
|||
/// <summary>
|
|||
/// Compresses a strip of the image.
|
|||
/// </summary>
|
|||
/// <param name="rows">Image rows to compress.</param>
|
|||
/// <param name="height">Image height.</param>
|
|||
public abstract void CompressStrip(Span<byte> rows, int height); |
|||
} |
|||
} |
|||
@ -0,0 +1,58 @@ |
|||
// Copyright (c) Six Labors.
|
|||
// Licensed under the Apache License, Version 2.0.
|
|||
|
|||
using System.IO; |
|||
using SixLabors.ImageSharp.Compression.Zlib; |
|||
using SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression.Compressors; |
|||
using SixLabors.ImageSharp.Formats.Experimental.Tiff.Constants; |
|||
using SixLabors.ImageSharp.Memory; |
|||
|
|||
namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression |
|||
{ |
|||
internal static class TiffCompressorFactory |
|||
{ |
|||
public static TiffBaseCompressor Create( |
|||
TiffEncoderCompression method, |
|||
Stream output, |
|||
MemoryAllocator allocator, |
|||
int width, |
|||
int bitsPerPixel, |
|||
DeflateCompressionLevel compressionLevel, |
|||
TiffPredictor predictor) |
|||
{ |
|||
switch (method) |
|||
{ |
|||
case TiffEncoderCompression.None: |
|||
DebugGuard.IsTrue(compressionLevel == DeflateCompressionLevel.DefaultCompression, "No deflate compression level is expected to be set"); |
|||
DebugGuard.IsTrue(predictor == TiffPredictor.None, "Predictor should only be used with lzw or deflate compression"); |
|||
|
|||
return new NoCompressor(output); |
|||
|
|||
case TiffEncoderCompression.PackBits: |
|||
DebugGuard.IsTrue(compressionLevel == DeflateCompressionLevel.DefaultCompression, "No deflate compression level is expected to be set"); |
|||
DebugGuard.IsTrue(predictor == TiffPredictor.None, "Predictor should only be used with lzw or deflate compression"); |
|||
return new PackBitsCompressor(output, allocator, width, bitsPerPixel); |
|||
|
|||
case TiffEncoderCompression.Deflate: |
|||
return new DeflateCompressor(output, allocator, width, bitsPerPixel, predictor, compressionLevel); |
|||
|
|||
case TiffEncoderCompression.Lzw: |
|||
DebugGuard.IsTrue(compressionLevel == DeflateCompressionLevel.DefaultCompression, "No deflate compression level is expected to be set"); |
|||
return new LzwCompressor(output, allocator, width, bitsPerPixel, predictor); |
|||
|
|||
case TiffEncoderCompression.CcittGroup3Fax: |
|||
DebugGuard.IsTrue(compressionLevel == DeflateCompressionLevel.DefaultCompression, "No deflate compression level is expected to be set"); |
|||
DebugGuard.IsTrue(predictor == TiffPredictor.None, "Predictor should only be used with lzw or deflate compression"); |
|||
return new T4BitCompressor(output, allocator, width, bitsPerPixel, false); |
|||
|
|||
case TiffEncoderCompression.ModifiedHuffman: |
|||
DebugGuard.IsTrue(compressionLevel == DeflateCompressionLevel.DefaultCompression, "No deflate compression level is expected to be set"); |
|||
DebugGuard.IsTrue(predictor == TiffPredictor.None, "Predictor should only be used with lzw or deflate compression"); |
|||
return new T4BitCompressor(output, allocator, width, bitsPerPixel, true); |
|||
|
|||
default: |
|||
throw TiffThrowHelper.NotSupportedCompressor(nameof(method)); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
@ -1,7 +1,7 @@ |
|||
// Copyright (c) Six Labors.
|
|||
// Licensed under the Apache License, Version 2.0.
|
|||
|
|||
namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression.Decompressors |
|||
namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression |
|||
{ |
|||
/// <summary>
|
|||
/// Provides enumeration of the various TIFF compression types the decoder can handle.
|
|||
@ -0,0 +1,46 @@ |
|||
// Copyright (c) Six Labors.
|
|||
// Licensed under the Apache License, Version 2.0.
|
|||
|
|||
using System; |
|||
using SixLabors.ImageSharp.Formats.Experimental.Tiff.Compression; |
|||
using SixLabors.ImageSharp.Memory; |
|||
using SixLabors.ImageSharp.PixelFormats; |
|||
|
|||
namespace SixLabors.ImageSharp.Formats.Experimental.Tiff.Writers |
|||
{ |
|||
/// <summary>
|
|||
/// The base class for composite color types: 8-bit gray, 24-bit RGB (4-bit gray, 16-bit (565/555) RGB, 32-bit RGB, CMYK, YCbCr).
|
|||
/// </summary>
|
|||
internal abstract class TiffCompositeColorWriter<TPixel> : TiffBaseColorWriter<TPixel> |
|||
where TPixel : unmanaged, IPixel<TPixel> |
|||
{ |
|||
private IManagedByteBuffer rowBuffer; |
|||
|
|||
protected TiffCompositeColorWriter(ImageFrame<TPixel> image, MemoryAllocator memoryAllocator, Configuration configuration, TiffEncoderEntriesCollector entriesCollector) |
|||
: base(image, memoryAllocator, configuration, entriesCollector) |
|||
{ |
|||
} |
|||
|
|||
protected override void EncodeStrip(int y, int height, TiffBaseCompressor compressor) |
|||
{ |
|||
if (this.rowBuffer == null) |
|||
{ |
|||
this.rowBuffer = this.MemoryAllocator.AllocateManagedByteBuffer(this.BytesPerRow * height); |
|||
} |
|||
|
|||
this.rowBuffer.Clear(); |
|||
|
|||
Span<byte> rowSpan = this.rowBuffer.GetSpan().Slice(0, this.BytesPerRow * height); |
|||
|
|||
Span<TPixel> pixels = GetStripPixels(this.Image.PixelBuffer, y, height); |
|||
|
|||
this.EncodePixels(pixels, rowSpan); |
|||
compressor.CompressStrip(rowSpan, height); |
|||
} |
|||
|
|||
protected abstract void EncodePixels(Span<TPixel> pixels, Span<byte> buffer); |
|||
|
|||
/// <inheritdoc />
|
|||
protected override void Dispose(bool disposing) => this.rowBuffer?.Dispose(); |
|||
} |
|||
} |
|||
@ -1,87 +0,0 @@ |
|||
``` ini |
|||
|
|||
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19042 |
|||
Intel Core i7-3610QM CPU 2.30GHz (Ivy Bridge), 1 CPU, 8 logical and 4 physical cores |
|||
.NET Core SDK=5.0.100 |
|||
[Host] : .NET Core 3.1.9 (CoreCLR 4.700.20.47201, CoreFX 4.700.20.47203), X64 RyuJIT |
|||
Job-KSIANY : .NET Framework 4.8 (4.8.4250.0), X64 RyuJIT |
|||
Job-VMCLSF : .NET Core 2.1.23 (CoreCLR 4.6.29321.03, CoreFX 4.6.29321.01), X64 RyuJIT |
|||
Job-UHENIY : .NET Core 3.1.9 (CoreCLR 4.700.20.47201, CoreFX 4.700.20.47203), X64 RyuJIT |
|||
|
|||
InvocationCount=1 IterationCount=5 LaunchCount=1 |
|||
UnrollFactor=1 WarmupCount=3 |
|||
|
|||
``` |
|||
| Method | Job | Runtime | TestImage | Mean | Error | StdDev | Ratio | RatioSD | Gen 0 | Gen 1 | Gen 2 | Allocated | |
|||
|---------------------- |----------- |-------------- |----------------------------------- |-----------:|----------:|----------:|------:|--------:|-----------:|----------:|----------:|------------:| |
|||
| **'System.Drawing Tiff'** | **Job-KSIANY** | **.NET 4.7.2** | **medium_bw_Fax3.tiff** | **491.6 ms** | **20.40 ms** | **5.30 ms** | **1.00** | **0.00** | **1000.0000** | **-** | **-** | **5768128 B** | |
|||
| 'ImageSharp Tiff' | Job-KSIANY | .NET 4.7.2 | medium_bw_Fax3.tiff | 6,970.2 ms | 70.64 ms | 10.93 ms | 14.23 | 0.12 | 1000.0000 | 1000.0000 | 1000.0000 | 241518600 B | |
|||
| | | | | | | | | | | | | | |
|||
| 'System.Drawing Tiff' | Job-VMCLSF | .NET Core 2.1 | medium_bw_Fax3.tiff | 486.2 ms | 23.15 ms | 3.58 ms | 1.00 | 0.00 | 1000.0000 | - | - | 5751016 B | |
|||
| 'ImageSharp Tiff' | Job-VMCLSF | .NET Core 2.1 | medium_bw_Fax3.tiff | 4,150.2 ms | 322.16 ms | 83.66 ms | 8.47 | 0.16 | - | - | - | 235961088 B | |
|||
| | | | | | | | | | | | | | |
|||
| 'System.Drawing Tiff' | Job-UHENIY | .NET Core 3.1 | medium_bw_Fax3.tiff | 490.1 ms | 12.76 ms | 3.31 ms | 1.00 | 0.00 | - | - | - | 176 B | |
|||
| 'ImageSharp Tiff' | Job-UHENIY | .NET Core 3.1 | medium_bw_Fax3.tiff | 3,582.9 ms | 61.89 ms | 16.07 ms | 7.31 | 0.06 | - | - | - | 235961496 B | |
|||
| | | | | | | | | | | | | | |
|||
| **'System.Drawing Tiff'** | **Job-KSIANY** | **.NET 4.7.2** | **medium_bw_Rle.tiff** | **499.1 ms** | **26.71 ms** | **6.94 ms** | **1.00** | **0.00** | **1000.0000** | **-** | **-** | **8494472 B** | |
|||
| 'ImageSharp Tiff' | Job-KSIANY | .NET 4.7.2 | medium_bw_Rle.tiff | 7,290.4 ms | 938.28 ms | 243.67 ms | 14.61 | 0.33 | 1000.0000 | 1000.0000 | 1000.0000 | 237020384 B | |
|||
| | | | | | | | | | | | | | |
|||
| 'System.Drawing Tiff' | Job-VMCLSF | .NET Core 2.1 | medium_bw_Rle.tiff | 490.6 ms | 30.19 ms | 4.67 ms | 1.00 | 0.00 | 1000.0000 | - | - | 8475688 B | |
|||
| 'ImageSharp Tiff' | Job-VMCLSF | .NET Core 2.1 | medium_bw_Rle.tiff | 4,230.2 ms | 35.59 ms | 5.51 ms | 8.62 | 0.08 | - | - | - | 235961944 B | |
|||
| | | | | | | | | | | | | | |
|||
| 'System.Drawing Tiff' | Job-UHENIY | .NET Core 3.1 | medium_bw_Rle.tiff | 487.6 ms | 12.07 ms | 1.87 ms | 1.00 | 0.00 | - | - | - | 176 B | |
|||
| 'ImageSharp Tiff' | Job-UHENIY | .NET Core 3.1 | medium_bw_Rle.tiff | 3,647.4 ms | 42.62 ms | 11.07 ms | 7.48 | 0.04 | - | - | - | 235962184 B | |
|||
| | | | | | | | | | | | | | |
|||
| **'System.Drawing Tiff'** | **Job-KSIANY** | **.NET 4.7.2** | **medium_grayscale_uncompressed.tiff** | **606.7 ms** | **20.45 ms** | **5.31 ms** | **1.00** | **0.00** | **18000.0000** | **-** | **-** | **90301696 B** | |
|||
| 'ImageSharp Tiff' | Job-KSIANY | .NET 4.7.2 | medium_grayscale_uncompressed.tiff | 1,852.9 ms | 6.74 ms | 1.75 ms | 3.05 | 0.03 | - | - | - | 235970584 B | |
|||
| | | | | | | | | | | | | | |
|||
| 'System.Drawing Tiff' | Job-VMCLSF | .NET Core 2.1 | medium_grayscale_uncompressed.tiff | 606.6 ms | 36.58 ms | 9.50 ms | 1.00 | 0.00 | 18000.0000 | - | - | 90104048 B | |
|||
| 'ImageSharp Tiff' | Job-VMCLSF | .NET Core 2.1 | medium_grayscale_uncompressed.tiff | 764.3 ms | 15.69 ms | 4.08 ms | 1.26 | 0.02 | - | - | - | 235965376 B | |
|||
| | | | | | | | | | | | | | |
|||
| 'System.Drawing Tiff' | Job-UHENIY | .NET Core 3.1 | medium_grayscale_uncompressed.tiff | 569.6 ms | 17.44 ms | 4.53 ms | 1.00 | 0.00 | - | - | - | 176 B | |
|||
| 'ImageSharp Tiff' | Job-UHENIY | .NET Core 3.1 | medium_grayscale_uncompressed.tiff | 655.2 ms | 17.48 ms | 4.54 ms | 1.15 | 0.01 | - | - | - | 235965488 B | |
|||
| | | | | | | | | | | | | | |
|||
| **'System.Drawing Tiff'** | **Job-KSIANY** | **.NET 4.7.2** | **medium_palette_uncompressed.tiff** | **578.0 ms** | **22.32 ms** | **5.80 ms** | **1.00** | **0.00** | **18000.0000** | **-** | **-** | **90301696 B** | |
|||
| 'ImageSharp Tiff' | Job-KSIANY | .NET 4.7.2 | medium_palette_uncompressed.tiff | 3,336.9 ms | 21.42 ms | 5.56 ms | 5.77 | 0.07 | - | - | - | 236003608 B | |
|||
| | | | | | | | | | | | | | |
|||
| 'System.Drawing Tiff' | Job-VMCLSF | .NET Core 2.1 | medium_palette_uncompressed.tiff | 601.9 ms | 40.85 ms | 6.32 ms | 1.00 | 0.00 | 18000.0000 | - | - | 90107368 B | |
|||
| 'ImageSharp Tiff' | Job-VMCLSF | .NET Core 2.1 | medium_palette_uncompressed.tiff | 1,971.9 ms | 15.69 ms | 4.07 ms | 3.28 | 0.04 | - | - | - | 235996096 B | |
|||
| | | | | | | | | | | | | | |
|||
| 'System.Drawing Tiff' | Job-UHENIY | .NET Core 3.1 | medium_palette_uncompressed.tiff | 566.1 ms | 28.06 ms | 4.34 ms | 1.00 | 0.00 | - | - | - | 176 B | |
|||
| 'ImageSharp Tiff' | Job-UHENIY | .NET Core 3.1 | medium_palette_uncompressed.tiff | 1,664.1 ms | 11.59 ms | 1.79 ms | 2.94 | 0.02 | - | - | - | 235996208 B | |
|||
| | | | | | | | | | | | | | |
|||
| **'System.Drawing Tiff'** | **Job-KSIANY** | **.NET 4.7.2** | **medium_rgb_deflate.tiff** | **357.4 ms** | **15.54 ms** | **2.40 ms** | **1.00** | **0.00** | **3000.0000** | **-** | **-** | **9662560 B** | |
|||
| 'ImageSharp Tiff' | Job-KSIANY | .NET 4.7.2 | medium_rgb_deflate.tiff | 776.1 ms | 14.51 ms | 3.77 ms | 2.17 | 0.01 | 22000.0000 | 1000.0000 | 1000.0000 | 303476856 B | |
|||
| | | | | | | | | | | | | | |
|||
| 'System.Drawing Tiff' | Job-VMCLSF | .NET Core 2.1 | medium_rgb_deflate.tiff | 359.7 ms | 12.29 ms | 3.19 ms | 1.00 | 0.00 | 3000.0000 | - | - | 9629400 B | |
|||
| 'ImageSharp Tiff' | Job-VMCLSF | .NET Core 2.1 | medium_rgb_deflate.tiff | 554.5 ms | 16.78 ms | 4.36 ms | 1.54 | 0.02 | 2000.0000 | 1000.0000 | 1000.0000 | 239716144 B | |
|||
| | | | | | | | | | | | | | |
|||
| 'System.Drawing Tiff' | Job-UHENIY | .NET Core 3.1 | medium_rgb_deflate.tiff | 353.2 ms | 7.22 ms | 1.12 ms | 1.00 | 0.00 | - | - | - | 176 B | |
|||
| 'ImageSharp Tiff' | Job-UHENIY | .NET Core 3.1 | medium_rgb_deflate.tiff | 557.1 ms | 10.79 ms | 2.80 ms | 1.58 | 0.00 | 2000.0000 | 1000.0000 | 1000.0000 | 239470552 B | |
|||
| | | | | | | | | | | | | | |
|||
| **'System.Drawing Tiff'** | **Job-KSIANY** | **.NET 4.7.2** | **medium_rgb_lzw.tiff** | **511.0 ms** | **6.43 ms** | **1.67 ms** | **1.00** | **0.00** | **3000.0000** | **-** | **-** | **11600840 B** | |
|||
| 'ImageSharp Tiff' | Job-KSIANY | .NET 4.7.2 | medium_rgb_lzw.tiff | 2,691.6 ms | 16.81 ms | 2.60 ms | 5.27 | 0.02 | - | - | - | 236044312 B | |
|||
| | | | | | | | | | | | | | |
|||
| 'System.Drawing Tiff' | Job-VMCLSF | .NET Core 2.1 | medium_rgb_lzw.tiff | 511.4 ms | 11.44 ms | 1.77 ms | 1.00 | 0.00 | 3000.0000 | - | - | 11569776 B | |
|||
| 'ImageSharp Tiff' | Job-VMCLSF | .NET Core 2.1 | medium_rgb_lzw.tiff | 1,654.1 ms | 12.42 ms | 1.92 ms | 3.23 | 0.01 | - | - | - | 236041592 B | |
|||
| | | | | | | | | | | | | | |
|||
| 'System.Drawing Tiff' | Job-UHENIY | .NET Core 3.1 | medium_rgb_lzw.tiff | 507.7 ms | 8.89 ms | 2.31 ms | 1.00 | 0.00 | - | - | - | 176 B | |
|||
| 'ImageSharp Tiff' | Job-UHENIY | .NET Core 3.1 | medium_rgb_lzw.tiff | 1,689.5 ms | 40.41 ms | 6.25 ms | 3.33 | 0.03 | - | - | - | 236041656 B | |
|||
| | | | | | | | | | | | | | |
|||
| **'System.Drawing Tiff'** | **Job-KSIANY** | **.NET 4.7.2** | **medium_rgb_packbits.tiff** | **776.8 ms** | **31.69 ms** | **8.23 ms** | **1.00** | **0.00** | **56000.0000** | **-** | **-** | **304057016 B** | |
|||
| 'ImageSharp Tiff' | Job-KSIANY | .NET 4.7.2 | medium_rgb_packbits.tiff | 531.2 ms | 23.17 ms | 6.02 ms | 0.68 | 0.01 | - | - | - | 236003352 B | |
|||
| | | | | | | | | | | | | | |
|||
| 'System.Drawing Tiff' | Job-VMCLSF | .NET Core 2.1 | medium_rgb_packbits.tiff | 764.2 ms | 41.43 ms | 6.41 ms | 1.00 | 0.00 | 56000.0000 | - | - | 303861120 B | |
|||
| 'ImageSharp Tiff' | Job-VMCLSF | .NET Core 2.1 | medium_rgb_packbits.tiff | 300.0 ms | 4.39 ms | 0.68 ms | 0.39 | 0.00 | - | - | - | 235998408 B | |
|||
| | | | | | | | | | | | | | |
|||
| 'System.Drawing Tiff' | Job-UHENIY | .NET Core 3.1 | medium_rgb_packbits.tiff | 659.1 ms | 34.59 ms | 8.98 ms | 1.00 | 0.00 | - | - | - | 176 B | |
|||
| 'ImageSharp Tiff' | Job-UHENIY | .NET Core 3.1 | medium_rgb_packbits.tiff | 297.5 ms | 21.13 ms | 5.49 ms | 0.45 | 0.00 | - | - | - | 235998520 B | |
|||
| | | | | | | | | | | | | | |
|||
| **'System.Drawing Tiff'** | **Job-KSIANY** | **.NET 4.7.2** | **medium_rgb_uncompressed.tiff** | **742.5 ms** | **50.45 ms** | **13.10 ms** | **1.00** | **0.00** | **55000.0000** | **-** | **-** | **302644272 B** | |
|||
| 'ImageSharp Tiff' | Job-KSIANY | .NET 4.7.2 | medium_rgb_uncompressed.tiff | 414.3 ms | 15.37 ms | 3.99 ms | 0.56 | 0.01 | - | - | - | 235986968 B | |
|||
| | | | | | | | | | | | | | |
|||
| 'System.Drawing Tiff' | Job-VMCLSF | .NET Core 2.1 | medium_rgb_uncompressed.tiff | 750.2 ms | 74.13 ms | 19.25 ms | 1.00 | 0.00 | 55000.0000 | - | - | 302448096 B | |
|||
| 'ImageSharp Tiff' | Job-VMCLSF | .NET Core 2.1 | medium_rgb_uncompressed.tiff | 283.6 ms | 21.56 ms | 5.60 ms | 0.38 | 0.01 | - | - | - | 235981128 B | |
|||
| | | | | | | | | | | | | | |
|||
| 'System.Drawing Tiff' | Job-UHENIY | .NET Core 3.1 | medium_rgb_uncompressed.tiff | 662.6 ms | 49.79 ms | 12.93 ms | 1.00 | 0.00 | - | - | - | 176 B | |
|||
| 'ImageSharp Tiff' | Job-UHENIY | .NET Core 3.1 | medium_rgb_uncompressed.tiff | 278.6 ms | 9.48 ms | 2.46 ms | 0.42 | 0.01 | - | - | - | 235981352 B | |
|||
@ -1,81 +0,0 @@ |
|||
<!DOCTYPE html> |
|||
<html lang='en'> |
|||
<head> |
|||
<meta charset='utf-8' /> |
|||
<title>SixLabors.ImageSharp.Benchmarks.Codecs.DecodeTiffBig-20201209-175548</title> |
|||
|
|||
<style type="text/css"> |
|||
table { border-collapse: collapse; display: block; width: 100%; overflow: auto; } |
|||
td, th { padding: 6px 13px; border: 1px solid #ddd; text-align: right; } |
|||
tr { background-color: #fff; border-top: 1px solid #ccc; } |
|||
tr:nth-child(even) { background: #f8f8f8; } |
|||
</style> |
|||
</head> |
|||
<body> |
|||
<pre><code> |
|||
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19042 |
|||
Intel Core i7-3610QM CPU 2.30GHz (Ivy Bridge), 1 CPU, 8 logical and 4 physical cores |
|||
.NET Core SDK=5.0.100 |
|||
[Host] : .NET Core 3.1.9 (CoreCLR 4.700.20.47201, CoreFX 4.700.20.47203), X64 RyuJIT |
|||
Job-KSIANY : .NET Framework 4.8 (4.8.4250.0), X64 RyuJIT |
|||
Job-VMCLSF : .NET Core 2.1.23 (CoreCLR 4.6.29321.03, CoreFX 4.6.29321.01), X64 RyuJIT |
|||
Job-UHENIY : .NET Core 3.1.9 (CoreCLR 4.700.20.47201, CoreFX 4.700.20.47203), X64 RyuJIT |
|||
</code></pre> |
|||
<pre><code>InvocationCount=1 IterationCount=5 LaunchCount=1 |
|||
UnrollFactor=1 WarmupCount=3 |
|||
</code></pre> |
|||
|
|||
<table> |
|||
<thead><tr><th> Method</th><th> Job</th><th>Runtime</th><th> TestImage</th><th>Mean</th><th>Error</th><th>StdDev</th><th>Ratio</th><th>RatioSD</th><th>Gen 0</th><th>Gen 1</th><th>Gen 2</th><th>Allocated</th> |
|||
</tr> |
|||
</thead><tbody><tr><td>'System.Drawing Tiff'</td><td>Job-KSIANY</td><td>.NET 4.7.2</td><td>medium_bw_Fax3.tiff</td><td>491.6 ms</td><td>20.40 ms</td><td>5.30 ms</td><td>1.00</td><td>0.00</td><td>1000.0000</td><td>-</td><td>-</td><td>5768128 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-KSIANY</td><td>.NET 4.7.2</td><td>medium_bw_Fax3.tiff</td><td>6,970.2 ms</td><td>70.64 ms</td><td>10.93 ms</td><td>14.23</td><td>0.12</td><td>1000.0000</td><td>1000.0000</td><td>1000.0000</td><td>241518600 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-VMCLSF</td><td>.NET Core 2.1</td><td>medium_bw_Fax3.tiff</td><td>486.2 ms</td><td>23.15 ms</td><td>3.58 ms</td><td>1.00</td><td>0.00</td><td>1000.0000</td><td>-</td><td>-</td><td>5751016 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-VMCLSF</td><td>.NET Core 2.1</td><td>medium_bw_Fax3.tiff</td><td>4,150.2 ms</td><td>322.16 ms</td><td>83.66 ms</td><td>8.47</td><td>0.16</td><td>-</td><td>-</td><td>-</td><td>235961088 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-UHENIY</td><td>.NET Core 3.1</td><td>medium_bw_Fax3.tiff</td><td>490.1 ms</td><td>12.76 ms</td><td>3.31 ms</td><td>1.00</td><td>0.00</td><td>-</td><td>-</td><td>-</td><td>176 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-UHENIY</td><td>.NET Core 3.1</td><td>medium_bw_Fax3.tiff</td><td>3,582.9 ms</td><td>61.89 ms</td><td>16.07 ms</td><td>7.31</td><td>0.06</td><td>-</td><td>-</td><td>-</td><td>235961496 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-KSIANY</td><td>.NET 4.7.2</td><td>medium_bw_Rle.tiff</td><td>499.1 ms</td><td>26.71 ms</td><td>6.94 ms</td><td>1.00</td><td>0.00</td><td>1000.0000</td><td>-</td><td>-</td><td>8494472 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-KSIANY</td><td>.NET 4.7.2</td><td>medium_bw_Rle.tiff</td><td>7,290.4 ms</td><td>938.28 ms</td><td>243.67 ms</td><td>14.61</td><td>0.33</td><td>1000.0000</td><td>1000.0000</td><td>1000.0000</td><td>237020384 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-VMCLSF</td><td>.NET Core 2.1</td><td>medium_bw_Rle.tiff</td><td>490.6 ms</td><td>30.19 ms</td><td>4.67 ms</td><td>1.00</td><td>0.00</td><td>1000.0000</td><td>-</td><td>-</td><td>8475688 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-VMCLSF</td><td>.NET Core 2.1</td><td>medium_bw_Rle.tiff</td><td>4,230.2 ms</td><td>35.59 ms</td><td>5.51 ms</td><td>8.62</td><td>0.08</td><td>-</td><td>-</td><td>-</td><td>235961944 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-UHENIY</td><td>.NET Core 3.1</td><td>medium_bw_Rle.tiff</td><td>487.6 ms</td><td>12.07 ms</td><td>1.87 ms</td><td>1.00</td><td>0.00</td><td>-</td><td>-</td><td>-</td><td>176 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-UHENIY</td><td>.NET Core 3.1</td><td>medium_bw_Rle.tiff</td><td>3,647.4 ms</td><td>42.62 ms</td><td>11.07 ms</td><td>7.48</td><td>0.04</td><td>-</td><td>-</td><td>-</td><td>235962184 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-KSIANY</td><td>.NET 4.7.2</td><td>medium_grayscale_uncompressed.tiff</td><td>606.7 ms</td><td>20.45 ms</td><td>5.31 ms</td><td>1.00</td><td>0.00</td><td>18000.0000</td><td>-</td><td>-</td><td>90301696 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-KSIANY</td><td>.NET 4.7.2</td><td>medium_grayscale_uncompressed.tiff</td><td>1,852.9 ms</td><td>6.74 ms</td><td>1.75 ms</td><td>3.05</td><td>0.03</td><td>-</td><td>-</td><td>-</td><td>235970584 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-VMCLSF</td><td>.NET Core 2.1</td><td>medium_grayscale_uncompressed.tiff</td><td>606.6 ms</td><td>36.58 ms</td><td>9.50 ms</td><td>1.00</td><td>0.00</td><td>18000.0000</td><td>-</td><td>-</td><td>90104048 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-VMCLSF</td><td>.NET Core 2.1</td><td>medium_grayscale_uncompressed.tiff</td><td>764.3 ms</td><td>15.69 ms</td><td>4.08 ms</td><td>1.26</td><td>0.02</td><td>-</td><td>-</td><td>-</td><td>235965376 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-UHENIY</td><td>.NET Core 3.1</td><td>medium_grayscale_uncompressed.tiff</td><td>569.6 ms</td><td>17.44 ms</td><td>4.53 ms</td><td>1.00</td><td>0.00</td><td>-</td><td>-</td><td>-</td><td>176 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-UHENIY</td><td>.NET Core 3.1</td><td>medium_grayscale_uncompressed.tiff</td><td>655.2 ms</td><td>17.48 ms</td><td>4.54 ms</td><td>1.15</td><td>0.01</td><td>-</td><td>-</td><td>-</td><td>235965488 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-KSIANY</td><td>.NET 4.7.2</td><td>medium_palette_uncompressed.tiff</td><td>578.0 ms</td><td>22.32 ms</td><td>5.80 ms</td><td>1.00</td><td>0.00</td><td>18000.0000</td><td>-</td><td>-</td><td>90301696 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-KSIANY</td><td>.NET 4.7.2</td><td>medium_palette_uncompressed.tiff</td><td>3,336.9 ms</td><td>21.42 ms</td><td>5.56 ms</td><td>5.77</td><td>0.07</td><td>-</td><td>-</td><td>-</td><td>236003608 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-VMCLSF</td><td>.NET Core 2.1</td><td>medium_palette_uncompressed.tiff</td><td>601.9 ms</td><td>40.85 ms</td><td>6.32 ms</td><td>1.00</td><td>0.00</td><td>18000.0000</td><td>-</td><td>-</td><td>90107368 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-VMCLSF</td><td>.NET Core 2.1</td><td>medium_palette_uncompressed.tiff</td><td>1,971.9 ms</td><td>15.69 ms</td><td>4.07 ms</td><td>3.28</td><td>0.04</td><td>-</td><td>-</td><td>-</td><td>235996096 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-UHENIY</td><td>.NET Core 3.1</td><td>medium_palette_uncompressed.tiff</td><td>566.1 ms</td><td>28.06 ms</td><td>4.34 ms</td><td>1.00</td><td>0.00</td><td>-</td><td>-</td><td>-</td><td>176 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-UHENIY</td><td>.NET Core 3.1</td><td>medium_palette_uncompressed.tiff</td><td>1,664.1 ms</td><td>11.59 ms</td><td>1.79 ms</td><td>2.94</td><td>0.02</td><td>-</td><td>-</td><td>-</td><td>235996208 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-KSIANY</td><td>.NET 4.7.2</td><td>medium_rgb_deflate.tiff</td><td>357.4 ms</td><td>15.54 ms</td><td>2.40 ms</td><td>1.00</td><td>0.00</td><td>3000.0000</td><td>-</td><td>-</td><td>9662560 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-KSIANY</td><td>.NET 4.7.2</td><td>medium_rgb_deflate.tiff</td><td>776.1 ms</td><td>14.51 ms</td><td>3.77 ms</td><td>2.17</td><td>0.01</td><td>22000.0000</td><td>1000.0000</td><td>1000.0000</td><td>303476856 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-VMCLSF</td><td>.NET Core 2.1</td><td>medium_rgb_deflate.tiff</td><td>359.7 ms</td><td>12.29 ms</td><td>3.19 ms</td><td>1.00</td><td>0.00</td><td>3000.0000</td><td>-</td><td>-</td><td>9629400 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-VMCLSF</td><td>.NET Core 2.1</td><td>medium_rgb_deflate.tiff</td><td>554.5 ms</td><td>16.78 ms</td><td>4.36 ms</td><td>1.54</td><td>0.02</td><td>2000.0000</td><td>1000.0000</td><td>1000.0000</td><td>239716144 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-UHENIY</td><td>.NET Core 3.1</td><td>medium_rgb_deflate.tiff</td><td>353.2 ms</td><td>7.22 ms</td><td>1.12 ms</td><td>1.00</td><td>0.00</td><td>-</td><td>-</td><td>-</td><td>176 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-UHENIY</td><td>.NET Core 3.1</td><td>medium_rgb_deflate.tiff</td><td>557.1 ms</td><td>10.79 ms</td><td>2.80 ms</td><td>1.58</td><td>0.00</td><td>2000.0000</td><td>1000.0000</td><td>1000.0000</td><td>239470552 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-KSIANY</td><td>.NET 4.7.2</td><td>medium_rgb_lzw.tiff</td><td>511.0 ms</td><td>6.43 ms</td><td>1.67 ms</td><td>1.00</td><td>0.00</td><td>3000.0000</td><td>-</td><td>-</td><td>11600840 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-KSIANY</td><td>.NET 4.7.2</td><td>medium_rgb_lzw.tiff</td><td>2,691.6 ms</td><td>16.81 ms</td><td>2.60 ms</td><td>5.27</td><td>0.02</td><td>-</td><td>-</td><td>-</td><td>236044312 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-VMCLSF</td><td>.NET Core 2.1</td><td>medium_rgb_lzw.tiff</td><td>511.4 ms</td><td>11.44 ms</td><td>1.77 ms</td><td>1.00</td><td>0.00</td><td>3000.0000</td><td>-</td><td>-</td><td>11569776 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-VMCLSF</td><td>.NET Core 2.1</td><td>medium_rgb_lzw.tiff</td><td>1,654.1 ms</td><td>12.42 ms</td><td>1.92 ms</td><td>3.23</td><td>0.01</td><td>-</td><td>-</td><td>-</td><td>236041592 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-UHENIY</td><td>.NET Core 3.1</td><td>medium_rgb_lzw.tiff</td><td>507.7 ms</td><td>8.89 ms</td><td>2.31 ms</td><td>1.00</td><td>0.00</td><td>-</td><td>-</td><td>-</td><td>176 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-UHENIY</td><td>.NET Core 3.1</td><td>medium_rgb_lzw.tiff</td><td>1,689.5 ms</td><td>40.41 ms</td><td>6.25 ms</td><td>3.33</td><td>0.03</td><td>-</td><td>-</td><td>-</td><td>236041656 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-KSIANY</td><td>.NET 4.7.2</td><td>medium_rgb_packbits.tiff</td><td>776.8 ms</td><td>31.69 ms</td><td>8.23 ms</td><td>1.00</td><td>0.00</td><td>56000.0000</td><td>-</td><td>-</td><td>304057016 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-KSIANY</td><td>.NET 4.7.2</td><td>medium_rgb_packbits.tiff</td><td>531.2 ms</td><td>23.17 ms</td><td>6.02 ms</td><td>0.68</td><td>0.01</td><td>-</td><td>-</td><td>-</td><td>236003352 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-VMCLSF</td><td>.NET Core 2.1</td><td>medium_rgb_packbits.tiff</td><td>764.2 ms</td><td>41.43 ms</td><td>6.41 ms</td><td>1.00</td><td>0.00</td><td>56000.0000</td><td>-</td><td>-</td><td>303861120 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-VMCLSF</td><td>.NET Core 2.1</td><td>medium_rgb_packbits.tiff</td><td>300.0 ms</td><td>4.39 ms</td><td>0.68 ms</td><td>0.39</td><td>0.00</td><td>-</td><td>-</td><td>-</td><td>235998408 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-UHENIY</td><td>.NET Core 3.1</td><td>medium_rgb_packbits.tiff</td><td>659.1 ms</td><td>34.59 ms</td><td>8.98 ms</td><td>1.00</td><td>0.00</td><td>-</td><td>-</td><td>-</td><td>176 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-UHENIY</td><td>.NET Core 3.1</td><td>medium_rgb_packbits.tiff</td><td>297.5 ms</td><td>21.13 ms</td><td>5.49 ms</td><td>0.45</td><td>0.00</td><td>-</td><td>-</td><td>-</td><td>235998520 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-KSIANY</td><td>.NET 4.7.2</td><td>medium_rgb_uncompressed.tiff</td><td>742.5 ms</td><td>50.45 ms</td><td>13.10 ms</td><td>1.00</td><td>0.00</td><td>55000.0000</td><td>-</td><td>-</td><td>302644272 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-KSIANY</td><td>.NET 4.7.2</td><td>medium_rgb_uncompressed.tiff</td><td>414.3 ms</td><td>15.37 ms</td><td>3.99 ms</td><td>0.56</td><td>0.01</td><td>-</td><td>-</td><td>-</td><td>235986968 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-VMCLSF</td><td>.NET Core 2.1</td><td>medium_rgb_uncompressed.tiff</td><td>750.2 ms</td><td>74.13 ms</td><td>19.25 ms</td><td>1.00</td><td>0.00</td><td>55000.0000</td><td>-</td><td>-</td><td>302448096 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-VMCLSF</td><td>.NET Core 2.1</td><td>medium_rgb_uncompressed.tiff</td><td>283.6 ms</td><td>21.56 ms</td><td>5.60 ms</td><td>0.38</td><td>0.01</td><td>-</td><td>-</td><td>-</td><td>235981128 B</td> |
|||
</tr><tr><td>'System.Drawing Tiff'</td><td>Job-UHENIY</td><td>.NET Core 3.1</td><td>medium_rgb_uncompressed.tiff</td><td>662.6 ms</td><td>49.79 ms</td><td>12.93 ms</td><td>1.00</td><td>0.00</td><td>-</td><td>-</td><td>-</td><td>176 B</td> |
|||
</tr><tr><td>'ImageSharp Tiff'</td><td>Job-UHENIY</td><td>.NET Core 3.1</td><td>medium_rgb_uncompressed.tiff</td><td>278.6 ms</td><td>9.48 ms</td><td>2.46 ms</td><td>0.42</td><td>0.01</td><td>-</td><td>-</td><td>-</td><td>235981352 B</td> |
|||
</tr></tbody></table> |
|||
</body> |
|||
</html> |
|||
Loading…
Reference in new issue