Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
171 changes: 107 additions & 64 deletions TopologicalSort/Program.fs
Original file line number Diff line number Diff line change
Expand Up @@ -177,66 +177,106 @@ module V6Data =

let graph = Graph.create edges

module V7Data =

open TopologicalSort.Version7

let nodes =
[|
0<Node>
1<Node>
2<Node>
3<Node>
4<Node>
5<Node>
|]

let edges =
[|
Edge.create nodes[0] nodes[1]
Edge.create nodes[0] nodes[2]
Edge.create nodes[1] nodes[3]
Edge.create nodes[1] nodes[4]
Edge.create nodes[2] nodes[1]
Edge.create nodes[2] nodes[4]
Edge.create nodes[3] nodes[5]
Edge.create nodes[4] nodes[5]
|]

let graph = Graph.create edges


[<MemoryDiagnoser>]
[<HardwareCounters(HardwareCounter.BranchMispredictions,
HardwareCounter.BranchInstructions,
HardwareCounter.CacheMisses)>]
HardwareCounter.BranchInstructions
// HardwareCounter.CacheMisses
)>]
type Benchmarks () =


[<Benchmark>]
member _.V1 () =

let result = Version1.Topological.sort V1Data.graph
match result with
| Some _ -> 1
| None -> 1

// [<Benchmark>]
// member _.V1 () =
//
// let result = Version1.Topological.sort V1Data.graph
// match result with
// | Some _ -> 1
// | None -> 1
//
//
// [<Benchmark>]
// member _.V2 () =
//
// let result = Version2.Topological.sort V2Data.graph
// match result with
// | Some _ -> 1
// | None -> 1
//
//
// [<Benchmark>]
// member _.V3 () =
//
// let result = Version3.Topological.sort V3Data.graph
// match result with
// | Some _ -> 1
// | None -> 1
//
//
// [<Benchmark>]
// member _.V4 () =
//
// let result = Version4.Topological.sort V4Data.graph
// match result with
// | Some _ -> 1
// | None -> 1
//
//
// [<Benchmark>]
// member _.V5 () =
//
// let result = Version5.Topological.sort V5Data.graph
// match result with
// | Some _ -> 1
// | None -> 1
//

[<Benchmark>]
member _.V2 () =

let result = Version2.Topological.sort V2Data.graph
match result with
| Some _ -> 1
| None -> 1


[<Benchmark>]
member _.V3 () =
member _.V6 () =

let result = Version3.Topological.sort V3Data.graph
let result = Version6.Topological.sort V6Data.graph
match result with
| Some _ -> 1
| None -> 1


[<Benchmark>]
member _.V4 () =

let result = Version4.Topological.sort V4Data.graph
match result with
| Some _ -> 1
| None -> 1


[<Benchmark>]
member _.V5 () =
member _.V7 () =

let result = Version5.Topological.sort V5Data.graph
let result = Version7.Topological.sort V7Data.graph
match result with
| Some _ -> 1
| None -> 1


[<Benchmark>]
member _.V6 () =

let result = Version6.Topological.sort V6Data.graph
match result with
| Some _ -> 1
| None -> 1
| Some _ ->
1
| None ->
printfn "v7 res is null"
1


let profile (version: string) loopCount =
Expand All @@ -245,29 +285,32 @@ let profile (version: string) loopCount =
let mutable result = 0

match version.ToLower() with
| "v1" ->
for i in 1 .. loopCount do
result <- result + b.V1 ()

| "v2" ->
for i in 1 .. loopCount do
result <- result + b.V2 ()

| "v3" ->
for i in 1 .. loopCount do
result <- result + b.V3 ()

| "v4" ->
for i in 1 .. loopCount do
result <- result + b.V4 ()

| "v5" ->
for i in 1 .. loopCount do
result <- result + b.V5 ()

// | "v1" ->
// for i in 1 .. loopCount do
// result <- result + b.V1 ()
//
// | "v2" ->
// for i in 1 .. loopCount do
// result <- result + b.V2 ()
//
// | "v3" ->
// for i in 1 .. loopCount do
// result <- result + b.V3 ()
//
// | "v4" ->
// for i in 1 .. loopCount do
// result <- result + b.V4 ()
//
// | "v5" ->
// for i in 1 .. loopCount do
// result <- result + b.V5 ()
//
| "v6" ->
for i in 1 .. loopCount do
result <- result + b.V6 ()
| "v7" ->
for i in 1 .. loopCount do
result <- result + b.V7 ()

| unknownVersion -> failwith $"Unknown version: {unknownVersion}"

Expand Down
1 change: 1 addition & 0 deletions TopologicalSort/TopologicalSort.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
<Compile Include="Version4.fs" />
<Compile Include="Version5.fs" />
<Compile Include="Version6.fs" />
<Compile Include="Version7.fs" />
<Compile Include="Program.fs" />
</ItemGroup>
<ItemGroup>
Expand Down
Loading