I was trying to find some information about the memory allocation counters that the @timed
macro returns. These should probably be explained in the documentation of @timed
. I did find some comments in the source code for the returned data structure:
struct GC_Diff
allocd ::Int64 # Bytes allocated
malloc ::Int64 # Number of GC aware malloc()
realloc ::Int64 # Number of GC aware realloc()
poolalloc ::Int64 # Number of pool allocation
bigalloc ::Int64 # Number of big (non-pool) allocation
freecall ::Int64 # Number of GC aware free()
total_time ::Int64 # Time spent in garbage collection
pause ::Int64 # Number of GC pauses
full_sweep ::Int64 # Number of GC full collection
end
Would anyone be able to explain in a bit more detail how these should be interpreted? Which of these are particularly interesting from a performance perspective? Coming from Fortran, I’d basically want to know how many times the equivalent Fortran code would call allocate
(i.e., array allocations, as opposed to allocations for scalar variables). Is this bigalloc
? What are pool allocations, conceptually?