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