stitch_something/StitchATon.Bench/Program.cs

106 lines
2.7 KiB
C#
Raw Permalink Normal View History

2025-08-01 15:29:06 +07:00
using System.Diagnostics;
using BenchmarkDotNet.Attributes;
using Microsoft.Extensions.Logging.Abstractions;
using OpenCvSharp;
using StitchATon.Services;
namespace StitchATon.Bench;
public class Program
{
static readonly ImageProvider Ip = new ( new ImageProvider.Config(
"/home/retorikal/Downloads/tiles1705/",
720,
55,
31),
NullLogger<ImageProvider>.Instance );
// static ImageProvider ip = new ( "/mnt/ramdisk/" );
static async Task Fn1()
{
using var im = await Ip.GetImage(
new Rect( new Point( 0, 0 ), new Size( 2, 1 ) ),
new Point2f( 0, 0 ),
new Point2f( 1, 1 ) );
// Cv2.ImEncode(".png", im, out _);
Cv2.ImWrite("/tmp/im1.png", im );
}
static async Task Fn2()
{
using var im = await Ip.GetImage(
new Rect( new Point( 1, 1 ), new Size( 3, 3 ) ),
new Point2f( 0, 0 ),
new Point2f( 1, 1 ) );
// Cv2.ImEncode(".png", im, out _);
// Cv2.ImWrite("/tmp/im2.png", im2 );
}
static async Task Fn3()
{
using var im = await Ip.GetImage(
new Rect( new Point( 2, 2 ), new Size( 3, 3 ) ),
new Point2f( 0.2f, 0.2f ),
new Point2f( .6f, .6f ) );
// Cv2.ImEncode(".png", im, out _);
// Cv2.ImWrite("/tmp/im3.png", im3 );
}
static async Task Fn4()
{
using var im = await Ip.GetImage(
new Rect( new Point( 0, 0 ), new Size( 10, 10 ) ),
new Point2f( 0.2f, 0.2f ),
new Point2f( .6f, .6f ) );
// Cv2.ImEncode(".png", im, out _);
// Cv2.ImWrite("/tmp/im4.png", im4 );
}
// [Benchmark]
static async Task Conc()
{
await Task.WhenAll(
Fn1(),
Fn2(),
Fn3(),
Fn4()
);
}
// [Benchmark]
static async Task Serial()
{
await Fn1();
await Fn2();
await Fn3();
await Fn4();
}
public static ProcessStartInfo MkfifoPs = new("mkfifo", "/tmp/out.png");
public static ProcessStartInfo RmfifoPs = new("rm", "/tmp/out.png");
[Benchmark]
public void Mkfifo()
{
Process.Start( MkfifoPs )?.WaitForExit();
Process.Start( RmfifoPs )?.WaitForExit();
}
public async static Task Main( string[] args )
{
await Fn1();
// var summary = BenchmarkRunner.Run<Program>();
// var stopwatch = Stopwatch.StartNew();
//
//
// stopwatch.Stop();
// Console.WriteLine( $"Elapsed time: {stopwatch.ElapsedMilliseconds} ms" );
//
// var stopwatchAfter = Stopwatch.StartNew();
// await Fn4();
// stopwatchAfter.Stop();
// Console.WriteLine( $"Elapsed time: {stopwatchAfter.ElapsedMilliseconds} ms" );
}
}