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?