Add an ellipse benchmark + unit test (WIP)
[master-thesis.git] / Parasitemia / Tests / ParasitemiaCore.Benchmark / Program.fs
index 5022108..6057f7f 100644 (file)
@@ -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
 
 [<EntryPoint>]
 let main argv =
-    kdTree ()
+    //KdTreeBench.bench1 ()
+    EllipsesBench.benchOld ()
+    EllipsesBench.benchNew ()
     0
\ No newline at end of file