Skip to content

Implementation of sizeof #50

Open
Open
@amontoison

Description

@amontoison

It could be relevant to know the storage used by a stats or a solver sometimes.
I implemented my own function in Krylov.jl but it can be used here too for optimization solvers.

function ksizeof(attribute)
  if isa(attribute, AbstractVector) && !isempty(attribute)
    # All vectors inside a vector have the same size in Krylov.jl
    size_attribute = length(attribute) * ksizeof(attribute[1])
  else
    size_attribute = sizeof(attribute)
  end
  return size_attribute
end

function sizeof(stats_solver :: Union{KrylovStats, KrylovSolver})
  type = typeof(stats_solver)
  nfields = fieldcount(type)
  storage = 0
  for i = 1:nfields
    field_i = getfield(stats_solver, i)
    size_i = ksizeof(field_i)
    storage += size_i
  end
  return storage
end

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions