mirror of https://github.com/SixLabors/ImageSharp
1 changed files with 42 additions and 0 deletions
@ -0,0 +1,42 @@ |
|||||
|
// Copyright (c) Six Labors.
|
||||
|
// Licensed under the Apache License, Version 2.0.
|
||||
|
|
||||
|
using BenchmarkDotNet.Attributes; |
||||
|
using SixLabors.ImageSharp.Memory; |
||||
|
using SixLabors.ImageSharp.PixelFormats; |
||||
|
|
||||
|
namespace SixLabors.ImageSharp.Benchmarks.General |
||||
|
{ |
||||
|
public class Buffer2D_DangerousGetRowSpan |
||||
|
{ |
||||
|
[Params(true, false)] |
||||
|
public bool IsDiscontiguousBuffer { get; set; } |
||||
|
|
||||
|
private Buffer2D<Rgba32> buffer; |
||||
|
|
||||
|
[GlobalSetup] |
||||
|
public void Setup() |
||||
|
{ |
||||
|
MemoryAllocator allocator = Configuration.Default.MemoryAllocator; |
||||
|
this.buffer = this.IsDiscontiguousBuffer |
||||
|
? allocator.Allocate2D<Rgba32>(4000, 1000) |
||||
|
: allocator.Allocate2D<Rgba32>(500, 1000); |
||||
|
} |
||||
|
|
||||
|
[GlobalCleanup] |
||||
|
public void Cleanup() => this.buffer.Dispose(); |
||||
|
|
||||
|
[Benchmark] |
||||
|
public int DangerousGetRowSpan() => |
||||
|
this.buffer.DangerousGetRowSpan(1).Length + |
||||
|
this.buffer.DangerousGetRowSpan(999).Length; |
||||
|
|
||||
|
// BenchmarkDotNet=v0.13.0, OS=Windows 10.0.19044
|
||||
|
// Intel Core i9-10900X CPU 3.70GHz, 1 CPU, 20 logical and 10 physical cores
|
||||
|
//
|
||||
|
// | Method | IsDiscontiguousBuffer | Mean | Error | StdDev |
|
||||
|
// |-------------------- |---------------------- |---------:|---------:|---------:|
|
||||
|
// | DangerousGetRowSpan | False | 74.96 ns | 1.505 ns | 1.478 ns |
|
||||
|
// | DangerousGetRowSpan | True | 71.49 ns | 1.446 ns | 2.120 ns |
|
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue