Last active
November 12, 2022 07:33
-
-
Save haf/0cc60dfb8e89df6b51aef4f86dbacd57 to your computer and use it in GitHub Desktop.
Revisions
-
haf revised this gist
Jul 23, 2018 . 1 changed file with 2 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,2 @@ dotnet build -c Release benchmarks/Chiron.Benchmarks/Chiron.Benchmarks.fsproj && \ dotnet benchmarks/Chiron.Benchmarks/bin/Release/netcoreapp2.0/Chiron.Benchmarks.dll --class ParseTest -
haf revised this gist
Jul 23, 2018 . No changes.There are no files selected for viewing
-
haf revised this gist
Jul 23, 2018 . 1 changed file with 97 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,97 @@ namespace ChironB.Benchmarks open Chiron open BenchmarkDotNet.Attributes open Newtonsoft.Json open Newtonsoft.Json.Linq module Bench = open System.IO open System.Text let resetStream (stream : #Stream) = stream.Seek(0L, SeekOrigin.Begin) |> ignore module Chiron = let inline parse (stream: #Stream): Json = let reader = new StreamReader(stream) reader.ReadToEnd() |> Json.parse |> JsonResult.getOrThrow // let inline parseAndDeserialize (stream : #Stream) : 'a = // let reader = new StreamReader(stream) // reader.ReadToEnd() // |> Json.parse // |> Json.deserialize module JsonNET = let serializer = JsonSerializer.CreateDefault() let inline parse (stream: #Stream): JObject = let jsonReader = new StreamReader(stream, Encoding.UTF8) let reader = new JsonTextReader(jsonReader, CloseInput = false) JObject.Load reader [<Config(typeof<CoreConfig>)>] type ParseTest () = let mutable jsonStream = null let mutable jsonString = null [<Setup>] member this.Setup () = jsonString <- loadJsonResourceAsString this.Name jsonStream <- loadJsonResource this.Name [<Params("error", "fparsec", "user", "prettyuser", "social")>] member val Name = "<null>" with get, set [<Benchmark>] member __.Chiron_New (): Chiron.JsonResult<Chiron.Json> = Chiron.Parsing.Json.parse jsonString [<Benchmark>] member __.Newtonsoft () = Bench.resetStream jsonStream Bench.JsonNET.parse jsonStream [<Config(typeof<CoreConfig>)>] type FormatTest () = let mutable jsonN = Chiron.Json.Null [<Setup>] member this.Setup () = jsonN <- loadJsonResourceAsString this.Name |> Chiron.Parsing.Json.parse |> Chiron.JsonResult.getOrThrow [<Params("error", "fparsec", "user", "prettyuser", "social")>] member val Name = "<null>" with get, set [<Benchmark>] member __.Chiron_New () = Chiron.Formatting.Json.format jsonN [<Config(typeof<CoreConfig>)>] type FormatVariableLengthStrings () = let mutable simpleJson = Chiron.Json.Null let mutable escapedJson = Chiron.Json.Null [<Params(10, 100, 1000, 10000, 100000)>] member val public strlen = 1 with get, set [<Setup>] member x.Setup () = let simple = String.replicate x.strlen "a" simpleJson <- Chiron.Json.String simple let escaped = String.replicate (x.strlen / 10) "\\u0004\\n\\\"" escapedJson <- Chiron.Json.String escaped [<Benchmark>] member __.Simple_New () = Chiron.Formatting.Json.format simpleJson [<Benchmark>] member __.Escaped_New () = Chiron.Formatting.Json.format escapedJson -
haf created this gist
Jul 23, 2018 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,26 @@ // * Summary * BenchmarkDotNet=v0.10.14, OS=macOS High Sierra 10.13.5 (17F77) [Darwin 17.6.0] Intel Core i7-7920HQ CPU 3.10GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores .NET Core SDK=2.1.200 [Host] : .NET Core 2.0.7 (CoreCLR 4.6.0.0, CoreFX 4.6.26403.03), 64bit RyuJIT MediumRun : .NET Core 2.0.7 (CoreCLR 4.6.0.0, CoreFX 4.6.26403.03), 64bit RyuJIT Job=MediumRun LaunchCount=2 TargetCount=15 WarmupCount=10 Method | Name | Mean | Error | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated | ----------- |----------- |---------------:|------------:|--------------:|----------:|----------:|---------:|-----------:| Chiron_New | error | 3.423 us | 0.0672 us | 0.0963 us | 0.2823 | - | - | 1200 B | Newtonsoft | error | 1.926 us | 0.1739 us | 0.2380 us | 1.6289 | - | - | 6840 B | Chiron_New | fparsec | 19.657 us | 0.2533 us | 0.3551 us | 1.4648 | - | - | 6200 B | Newtonsoft | fparsec | 9.459 us | 0.0957 us | 0.1432 us | 3.2349 | - | - | 13576 B | Chiron_New | prettyuser | 48.209 us | 0.7862 us | 1.1768 us | 3.9063 | - | - | 16632 B | Newtonsoft | prettyuser | 20.805 us | 0.1651 us | 0.2259 us | 5.4626 | - | - | 22968 B | Chiron_New | social | 125,279.691 us | 825.6099 us | 1,210.1683 us | 5812.5000 | 1937.5000 | 625.0000 | 30154333 B | Newtonsoft | social | NA | NA | NA | N/A | N/A | N/A | N/A | Chiron_New | user | 45.557 us | 0.4152 us | 0.6085 us | 3.9063 | - | - | 16632 B | Newtonsoft | user | 20.237 us | 0.2521 us | 0.3695 us | 5.4626 | - | - | 22968 B | Benchmarks with issues: ParseTest.Newtonsoft: MediumRun(LaunchCount=2, TargetCount=15, WarmupCount=10) [Name=social]