Skip to content

Commit b21a19b

Browse files
committed
Add benchmarks
1 parent e94afbb commit b21a19b

7 files changed

Lines changed: 187 additions & 0 deletions
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using SimJulia, Distributions, BenchmarkTools
2+
3+
@stateful function exp_source(sim::Simulation, lambd::Float64, server::Resource, mu::Float64)
4+
while true
5+
dt = rand(Exponential(1/lambd))
6+
@yield return Timeout(sim, dt)
7+
@Coroutine customer2(sim, server, mu)
8+
end
9+
end
10+
11+
@stateful function customer(sim::Simulation, server::Resource, mu::Float64)
12+
@yield return Request(server)
13+
dt = rand(Exponential(1/mu))
14+
@yield return Timeout(sim, dt)
15+
@yield return Release(server)
16+
end
17+
18+
@stateful function customer2(sim::Simulation, server::Resource, mu::Float64)
19+
@Request server req begin
20+
dt = rand(Exponential(1/mu))
21+
@yield return Timeout(sim, dt)
22+
end
23+
end
24+
25+
function test_mm1(n::Float64)
26+
sim = Simulation()
27+
server = Resource(sim, 1)
28+
@Coroutine exp_source(sim, 1.0, server, 1.1)
29+
run(sim, n)
30+
end
31+
32+
BenchmarkTools.DEFAULT_PARAMETERS.samples = 100
33+
println(mean(@benchmark test_mm1(100.0)))
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using SimJulia, BenchmarkTools
2+
3+
@stateful function fibonnaci(sim::Simulation)
4+
a = 0.0
5+
b = 1.0
6+
while true
7+
@yield return Timeout(sim, 1)
8+
a, b = b, a+b
9+
end
10+
end
11+
12+
function run_test()
13+
sim = Simulation()
14+
@Coroutine fibonnaci(sim)
15+
run(sim, 10)
16+
end
17+
18+
run_test()
19+
BenchmarkTools.DEFAULT_PARAMETERS.samples = 100
20+
println(mean(@benchmark run_test()))
21+
#@profile for i in 1:100; run_test(); end
22+
#Profile.print(format=:flat)
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using SimJulia, Distributions, BenchmarkTools
2+
3+
@stateful function exp_source(sim::Simulation, lambd::Float64, server::Resource, mu::Float64)
4+
while true
5+
dt = rand(Exponential(1/lambd))
6+
@yield return Timeout(sim, dt)
7+
@Process customer2(sim, server, mu)
8+
end
9+
end
10+
11+
function customer(sim::Simulation, server::Resource, mu::Float64)
12+
yield(Request(server))
13+
dt = rand(Exponential(1/mu))
14+
yield(Timeout(sim, dt))
15+
yield(Release(server))
16+
end
17+
18+
function customer2(sim::Simulation, server::Resource, mu::Float64)
19+
Request(server) do req
20+
dt = rand(Exponential(1/mu))
21+
yield(Timeout(sim, dt))
22+
end
23+
end
24+
25+
function test_mm1(n::Float64)
26+
sim = Simulation()
27+
server = Resource(sim, 1)
28+
@Coroutine exp_source(sim, 1.0, server, 1.1)
29+
run(sim, n)
30+
end
31+
32+
BenchmarkTools.DEFAULT_PARAMETERS.samples = 100
33+
println(mean(@benchmark test_mm1(100.0)))
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using SimJulia, Distributions, BenchmarkTools
2+
3+
function exp_source(sim::Simulation, lambd::Float64, server::Resource, mu::Float64)
4+
while true
5+
dt = rand(Exponential(1/lambd))
6+
yield(Timeout(sim, dt))
7+
@Process customer2(sim, server, mu)
8+
end
9+
end
10+
11+
function customer(sim::Simulation, server::Resource, mu::Float64)
12+
yield(Request(server))
13+
dt = rand(Exponential(1/mu))
14+
yield(Timeout(sim, dt))
15+
yield(Release(server))
16+
end
17+
18+
function customer2(sim::Simulation, server::Resource, mu::Float64)
19+
Request(server) do req
20+
dt = rand(Exponential(1/mu))
21+
yield(Timeout(sim, dt))
22+
end
23+
end
24+
25+
function test_mm1(n::Float64)
26+
sim = Simulation()
27+
server = Resource(sim, 1)
28+
@Process exp_source(sim, 1.0, server, 1.1)
29+
run(sim, n)
30+
end
31+
32+
BenchmarkTools.DEFAULT_PARAMETERS.samples = 100
33+
println(mean(@benchmark test_mm1(100.0)))
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using SimJulia, BenchmarkTools
2+
3+
function fibonnaci(sim::Simulation)
4+
a = 0.0
5+
b = 1.0
6+
while true
7+
yield(Timeout(sim, 1))
8+
a, b = b, a+b
9+
end
10+
end
11+
12+
function run_test()
13+
sim = Simulation()
14+
@Process fibonnaci(sim)
15+
run(sim, 10)
16+
end
17+
18+
run_test()
19+
BenchmarkTools.DEFAULT_PARAMETERS.samples = 100
20+
println(mean(@benchmark run_test()))
21+
#@profile for i in 1:100; run_test(); end
22+
#Profile.print(format=:flat)
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using SimJulia, BenchmarkTools
2+
3+
@stateful function fibonnaci(sim::Simulation)
4+
a = 0.0
5+
b = 1.0
6+
while true
7+
@yield return nothing
8+
a, b = b, a+b
9+
end
10+
end
11+
12+
function run_test()
13+
sim = Simulation()
14+
fib = fibonnaci(sim)
15+
for i in 1:10
16+
fib()
17+
end
18+
end
19+
20+
run_test()
21+
BenchmarkTools.DEFAULT_PARAMETERS.samples = 100
22+
println(mean(@benchmark run_test()))

test/benchmarks/benchmark_tasks.jl

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using SimJulia, BenchmarkTools
2+
3+
function fibonnaci(sim::Simulation)
4+
a = 0.0
5+
b = 1.0
6+
while true
7+
SimJulia.produce(Timeout(sim, 1))
8+
a, b = b, a+b
9+
end
10+
end
11+
12+
function run_test()
13+
sim = Simulation()
14+
fib = @task fibonnaci(sim)
15+
for i in 1:10
16+
SimJulia.consume(fib)
17+
end
18+
end
19+
20+
run_test()
21+
BenchmarkTools.DEFAULT_PARAMETERS.samples = 100
22+
println(mean(@benchmark run_test()))

0 commit comments

Comments
 (0)