Skip to content

Commit f247681

Browse files
Modify naive split approach for performance
Avoids allocating intermediate arrays
1 parent 38ee9d6 commit f247681

1 file changed

Lines changed: 6 additions & 6 deletions

File tree

src/metrics.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -617,13 +617,13 @@ function LME(obs, sim)::Float64
617617
end
618618

619619

620-
function naive_split_metric(obs::Vector, sim::Vector, n_members::Int, metric::Function=NNSE)
621-
obs_chunks = collect(Iterators.partition(obs, n_members))
622-
sim_chunks = collect(Iterators.partition(sim, n_members))
623-
scores = Array{Float64,1}(undef, length(obs_chunks))
620+
function naive_split_metric(obs::Vector, sim::Vector, n_members::Int, metric::Function=RMSE)
621+
obs_chunks = Iterators.partition(obs, n_members)
622+
sim_chunks = Iterators.partition(sim, n_members)
623+
scores = Vector{Float64}(undef, ceil(Int64, length(sim) / n_members))
624624

625-
for (idx, h_chunk) in enumerate(obs_chunks)
626-
scores[idx] = metric(h_chunk, sim_chunks[idx])
625+
for (idx, (h_chunk, s_chunk)) in enumerate(zip(obs_chunks, sim_chunks))
626+
scores[idx] = metric(h_chunk, s_chunk)
627627
end
628628

629629
return scores

0 commit comments

Comments
 (0)