Skip to content
Snippets Groups Projects
access_trajectory.jl 1.84 KiB

using BenchmarkTools
import BenchmarkTools: mean
using MarkovProcesses
include(get_module_path() * "/core/_tests_simulate.jl")

BenchmarkTools.DEFAULT_PARAMETERS.samples = 20000
if ARGS[1] == "SIR"
    bound_time = 200.0
    l_var = ["S", "I", "R"]

    load_model("_bench_perf_test/SIR_col_buffer")
    SIR_col_buffer.time_bound = bound_time
    set_observed_var!(SIR_col_buffer, l_var)
    load_model("_bench_perf_test/SIR_row_buffer")
    SIR_row_buffer.time_bound = bound_time
    set_observed_var!(SIR_row_buffer, l_var)

    model_col_buffer = SIR_col_buffer
    model_row_buffer = SIR_row_buffer
elseif ARGS[1] == "ER"
    l_var = ["E","S","ES","P"]
    bound_time = 20.0

    load_model("_bench_perf_test/ER_col_buffer")
    ER_col_buffer.time_bound = bound_time
    set_observed_var!(ER_col_buffer, l_var)
    load_model("_bench_perf_test/ER_row_buffer")
    ER_row_buffer.time_bound = bound_time
    set_observed_var!(ER_row_buffer, l_var)

    model_col_buffer = ER_col_buffer
    model_row_buffer = ER_row_buffer
else
    error("Unavailable model")
end

println("Col buffer:")

function access_trajectory_col(m::Model)
    res = 0
    n_sim = 100
    for k = 1:n_sim
        σ = _simulate_col_buffer(m)
        t = _get_values_col(σ, "I")
        res += t[end-1]
    end
    return res
end
# Bench
@timev access_trajectory_col(model_col_buffer) 
b1_col = @benchmark access_trajectory_col($model_col_buffer)
@show minimum(b1_col), mean(b1_col), maximum(b1_col)

println("Row buffer:")

function access_trajectory_row(m::Model)
    res = 0
    n_sim = 100
    for k = 1:n_sim
        σ = _simulate_row_buffer(m)
        t = _get_values_row(σ, "I")
        res += t[end-1]
    end
    return res
end
# Bench
@timev access_trajectory_row(model_row_buffer) 
b1_row = @benchmark access_trajectory_row($model_row_buffer)
@show minimum(b1_row), mean(b1_row), maximum(b1_row)