// 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