Closed rusandris closed 3 months ago
using StateTransitionNetworks, DynamicalSystems Extra allocations make timeseries_to_grid! slow when using Matrix :
timeseries_to_grid!
Matrix
a::Float64 = 0.9 b0::Float64 = -0.6 c::Float64 = 2.0 d::Float64 = 0.5 p::Vector{Float64} = [a,b0,c,d] const u0::Vector{Float64} = [0.0,0.1] tinkerbell_map(u,p,n) = SVector(u[1]^2-u[2]^2+p[1]*u[1]+p[2]*u[2],2*u[1]*u[2]+p[3]*u[1]+p[4]*u[2]) ds = DeterministicIteratedMap(tinkerbell_map,u0,p); orbit,t = trajectory(ds,10^8;Ttr=1000) #orbit is a StateSpaceSet sts_container::Vector{Int64} = zeros(Int64,length(orbit)) orbit_container::Matrix{Float64} = zeros(Float64,length(sts_container),2)
These are the runtimes:
#StateSpaceSet @time timeseries_to_grid!(sts_container,orbit,20;grid_edges=[-2.0,-2.0,1.0,1.0]) 0.408147 seconds (2 allocations: 112 bytes) #Matrix @time timeseries_to_grid!(sts_container,orbit_container,20;grid_edges=[-2.0,-2.0,1.0,1.0]) 4.781223 seconds (100.00 M allocations: 7.451 GiB, 21.31% gc time)
After 47cfc81 , these are the times:
using timeseries_to_grid! on orbit (StateSpaceSet):
orbit
StateSpaceSet
#StateSpaceSet @time timeseries_to_grid!(sts_container,orbit,20;grid_edges=[-2.0,-2.0,1.0,1.0]) 0.400138 seconds (2 allocations: 112 bytes)
using timeseries_to_grid! on orbit_container (Matrix):
orbit_container
#Matrix @time timeseries_to_grid!(sts_container,orbit_container,20;grid_edges=[-2.0,-2.0,1.0,1.0]) 0.424535 seconds (1 allocation: 96 bytes)
Passes tests of e317379
using StateTransitionNetworks, DynamicalSystems Extra allocations make
timeseries_to_grid!
slow when usingMatrix
:These are the runtimes:
After 47cfc81 , these are the times:
using
timeseries_to_grid!
onorbit
(StateSpaceSet
):using
timeseries_to_grid!
onorbit_container
(Matrix
):