JPSoft.Profiling
3.1.0
dotnet add package JPSoft.Profiling --version 3.1.0
NuGet\Install-Package JPSoft.Profiling -Version 3.1.0
<PackageReference Include="JPSoft.Profiling" Version="3.1.0" />
paket add JPSoft.Profiling --version 3.1.0
#r "nuget: JPSoft.Profiling, 3.1.0"
// Install JPSoft.Profiling as a Cake Addin
#addin nuget:?package=JPSoft.Profiling&version=3.1.0
// Install JPSoft.Profiling as a Cake Tool
#tool nuget:?package=JPSoft.Profiling&version=3.1.0
JPSoft.Profiling
A small profiling API.
Information
This package is no longer maintained.
I've developed another project to the same end: JPSoft.Benchmarker
Getting Started
Simply do:
var test = Profiler.BuildTest(Profiler.BuildTest((builder) =>
builder.For<int,int>((a,b) => var c = a + b)
.WithParameter(2)
.WithParameter(9)
.WithIterations(100)
.WithName("Test")));
var profile = Profiler.Run(test);
Or simpler:
var profile = Profiler.BuildAndRunTest(Profiler.BuildTest<int,int>((builder) =>
builder.For<int,int>((a,b) => var c = a + b)
.WithParameter(2).WithParameter(9)
.WithIterations(100)
.WithName("Test")));
You can add a timeout condition:
(builder) => builder.For(() => Console.Write('Hello world'))
.WithTimeout(10000)));
And then reap consult the generated profile;
profile.IsSuccess; /* <-- if test ran without an exception or timeout */
profile.Milliseconds; /* <-- test run time in ms */
profile.MillisecondsPerIteration;
profile.IterationsPerMillisecond;
profile.StartedOn;
profile.EndedOn;
profile.TaskRunStatus; /* <-- The original test task status */
profile.Iterations;
profile.Exception; /* <-- case one was thrown */
Prerequisites
Must be compatible with netstandard2.0
NuGet Packages
Install-Package JPSoft.Profiling
Motivation
Premature optimization maybe the root of all evil but sometimes you just want to test the hell out of a code snippet or maybe an entire method.
I got tired of writing for loops
& stopWatch.Start()
to test my micro optimizations and this was a fun project to do.
Hope you guys enjoy it.
Author
- João Palma Sequeira - JMPSequeira
License
This project is licensed under the MIT License - see the LICENSE.txt file for details
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
This package has no dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Added methods to run multiple times