X-Git-Url: http://git.euphorik.ch/?p=master-thesis.git;a=blobdiff_plain;f=Parasitemia%2FTests%2FParasitemiaCore.Benchmark%2FProgram.fs;h=6057f7f00cb22e4baf0ff08aab5500f8ea603631;hp=5022108eebde6aedda3b54bbd026af3ad74a429f;hb=2e029053d283ce141ce9870336cb9574ea4a203a;hpb=8866c578f1210295bdcf04c8212eae81d52d630a diff --git a/Parasitemia/Tests/ParasitemiaCore.Benchmark/Program.fs b/Parasitemia/Tests/ParasitemiaCore.Benchmark/Program.fs index 5022108..6057f7f 100644 --- a/Parasitemia/Tests/ParasitemiaCore.Benchmark/Program.fs +++ b/Parasitemia/Tests/ParasitemiaCore.Benchmark/Program.fs @@ -1,70 +1,10 @@ // Learn more about F# at http://docs.microsoft.com/dotnet/fsharp -open System -open type System.Console - -open ParasitemiaCore.KdTree - -type Point (x : float32, y : float32) = - interface I2DCoords with - member this.X = x - member this.Y = y - - override this.ToString () = - sprintf "(%.1f, %.1f)" x y - -let kdTree () = - let min = -1_000. - let max = +1_000. - let windowSize = 10. - let nbPoints = 1_000_000 - let n = 1_000_000 - - let rng = Random 42 - let nextNumber (min : float) (max : float) (rng : Random) = - (rng.NextDouble () * (max + abs min)) + min |> float32 - - let points = - [ - for i = 1 to nbPoints do - let x = nextNumber min max rng - let y = nextNumber min max rng - Point (x, y) - ] - - let sw = System.Diagnostics.Stopwatch () - sw.Start () - - let tree = Tree.BuildTree points - - sw.Stop () - WriteLine (sprintf "Time to build = %A ms" sw.ElapsedMilliseconds) - - let rng = Random 42 - sw.Restart () - - let mutable nbFound = 0 - for i = 1 to n do - let minX = nextNumber min (max - windowSize) rng - let minY = nextNumber min (max - windowSize) rng - nbFound <- nbFound + (tree.SearchOld { minX = minX; maxX = minX + float32 windowSize; minY = minY; maxY = minY + float32 windowSize } |> List.length) - - sw.Stop () - WriteLine (sprintf "New: nb found: %i. Time to search = %A ms" nbFound sw.ElapsedMilliseconds) - - let rng = Random 42 - sw.Restart () - - let mutable nbFound = 0 - for i = 1 to n do - let minX = nextNumber min (max - windowSize) rng - let minY = nextNumber min (max - windowSize) rng - nbFound <- nbFound + (tree.Search { minX = minX; maxX = minX + float32 windowSize; minY = minY; maxY = minY + float32 windowSize }).Count - - sw.Stop () - WriteLine (sprintf "New: nb found: %i. Time to search = %A ms" nbFound sw.ElapsedMilliseconds) +module ParasitemiaCore.Main [] let main argv = - kdTree () + //KdTreeBench.bench1 () + EllipsesBench.benchOld () + EllipsesBench.benchNew () 0 \ No newline at end of file