mirror of https://github.com/SixLabors/ImageSharp
4 changed files with 90 additions and 58 deletions
@ -0,0 +1,73 @@ |
|||
// Copyright (c) Six Labors and contributors.
|
|||
// Licensed under the Apache License, Version 2.0.
|
|||
|
|||
using System; |
|||
using System.IO; |
|||
using BenchmarkDotNet.Attributes; |
|||
using SixLabors.ImageSharp.Formats.Jpeg.PdfJsPort.Components; |
|||
|
|||
namespace SixLabors.ImageSharp.Benchmarks.Codecs.Jpeg |
|||
{ |
|||
[Config(typeof(Config.ShortClr))] |
|||
public class DoubleBufferedStreams |
|||
{ |
|||
private byte[] buffer = CreateTestBytes(); |
|||
|
|||
private MemoryStream stream1; |
|||
private MemoryStream stream2; |
|||
DoubleBufferedStreamReader reader; |
|||
|
|||
[GlobalSetup] |
|||
public void CreateStreams() |
|||
{ |
|||
this.stream1 = new MemoryStream(this.buffer); |
|||
this.stream2 = new MemoryStream(this.buffer); |
|||
this.reader = new DoubleBufferedStreamReader(Configuration.Default.MemoryManager, this.stream2); |
|||
} |
|||
|
|||
[GlobalCleanup] |
|||
public void DestroyStreams() |
|||
{ |
|||
this.stream1?.Dispose(); |
|||
this.stream2?.Dispose(); |
|||
this.reader?.Dispose(); |
|||
} |
|||
|
|||
[Benchmark(Baseline = true)] |
|||
public int StandardStream() |
|||
{ |
|||
int r = 0; |
|||
Stream stream = this.stream1; |
|||
|
|||
for (int i = 0; i < stream.Length; i++) |
|||
{ |
|||
r += stream.ReadByte(); |
|||
} |
|||
|
|||
return r; |
|||
} |
|||
|
|||
[Benchmark] |
|||
public int DoubleBufferedStream() |
|||
{ |
|||
int r = 0; |
|||
DoubleBufferedStreamReader reader = this.reader; |
|||
|
|||
for (int i = 0; i < reader.Length; i++) |
|||
{ |
|||
r += reader.ReadByte(); |
|||
} |
|||
|
|||
return r; |
|||
} |
|||
|
|||
private static byte[] CreateTestBytes() |
|||
{ |
|||
byte[] buffer = new byte[DoubleBufferedStreamReader.ChunkLength * 3]; |
|||
var random = new Random(); |
|||
random.NextBytes(buffer); |
|||
|
|||
return buffer; |
|||
} |
|||
} |
|||
} |
|||
@ -1,53 +0,0 @@ |
|||
using System; |
|||
using System.IO; |
|||
using BenchmarkDotNet.Attributes; |
|||
using SixLabors.ImageSharp.Formats.Jpeg.PdfJsPort.Components; |
|||
|
|||
namespace SixLabors.ImageSharp.Benchmarks.General |
|||
{ |
|||
[Config(typeof(Config.ShortClr))] |
|||
public class DoubleBufferedStreams |
|||
{ |
|||
private byte[] buffer = CreateTestBytes(); |
|||
|
|||
[Benchmark] |
|||
public int StandardStream() |
|||
{ |
|||
int r = 0; |
|||
using (var stream = new MemoryStream(this.buffer)) |
|||
{ |
|||
for (int i = 0; i < stream.Length; i++) |
|||
{ |
|||
r += stream.ReadByte(); |
|||
} |
|||
} |
|||
|
|||
return r; |
|||
} |
|||
|
|||
[Benchmark] |
|||
public int ChunkedStream() |
|||
{ |
|||
int r = 0; |
|||
using (var stream = new MemoryStream(this.buffer)) |
|||
{ |
|||
var reader = new DoubleBufferedStreamReader(stream); |
|||
for (int i = 0; i < reader.Length; i++) |
|||
{ |
|||
r += reader.ReadByte(); |
|||
} |
|||
} |
|||
|
|||
return r; |
|||
} |
|||
|
|||
private static byte[] CreateTestBytes() |
|||
{ |
|||
byte[] buffer = new byte[DoubleBufferedStreamReader.ChunkLength * 3]; |
|||
var random = new Random(); |
|||
random.NextBytes(buffer); |
|||
|
|||
return buffer; |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue