FsProfiler 0.3.2
dotnet add package FsProfiler --version 0.3.2
NuGet\Install-Package FsProfiler -Version 0.3.2
<PackageReference Include="FsProfiler" Version="0.3.2" />
paket add FsProfiler --version 0.3.2
#r "nuget: FsProfiler, 0.3.2"
// Install FsProfiler as a Cake Addin #addin nuget:?package=FsProfiler&version=0.3.2 // Install FsProfiler as a Cake Tool #tool nuget:?package=FsProfiler&version=0.3.2
FsProfiler
let's you track the execution times of definable pieces of code.
Examples
Disposing Profiler
The DisposingProfiler
tracks the time taken between its instanciation and disposition.
It is super easy to integrate and requires no manual "stopping".
open System.Net
open System.Xml.Linq
let linkCountOnPage (url : string) =
use dp = new DisposingProfiler "Analyzing site"
use client = new WebClient()
let html =
use __ = dp.StartSubtask "Downloading"
client.DownloadString url
let result =
use __ = dp.StartSubtask "Parsing HTML"
let doc = XDocument.Parse html
let rec getATag (elements : XElement seq) =
elements
|> Seq.filter (fun c -> c.Name.LocalName = "a")
|> Seq.append (
elements
|> Seq.filter (fun c -> c.Name.LocalName <> "a")
|> Seq.collect (fun c -> c.Descendants () |> getATag))
doc.Root.Descendants () |> getATag |> Seq.length
result
Set up a listener for events.
open FsProfiler.Listeners
use tObs = new ObservableTaskListener ()
This listener implements IObservable<Task>
.
You can easily observe completed tasks by subscribing to that listener.
The easyest way is to just use one of the task formatters.
open FsProfiler.Output
let asd = tObs.Subscribe (TaskPrinter.print)
Execute the code
linkCountOnPage "https://github.com/ChrSteinert/FsProfier"
As we subscribed to completed events with an printer that just outputs to the console we get the following output:
Analyzing site
Downloading
--- 230ms
Parsing HTML
--- 460ms
--- 690ms
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. |
-
.NETStandard 2.0
- FSharp.Core (>= 8.0.100)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.