View source code
Display the source code in std/experimental/allocator/building_blocks/stats_collector.d from which this
page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a
Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
Struct std.experimental.allocator.building_blocks.stats_collector.StatsCollector
Allocator that collects extra data about allocations. Since each piece of
information adds size and time overhead, statistics can be individually enabled
or disabled through compile-time flags
.
struct StatsCollector(Allocator, ulong flags = Options .all, ulong perCallFlags = 0)
;
All stats of the form numXxx
record counts of events occurring, such as
calls to functions and specific results. The stats of the form bytesXxx
collect cumulative sizes.
In addition, the data callerSize
, callerModule
, callerFile
, callerLine
, and callerTime
is associated with each specific allocation.
This data prefixes each allocation.
Fields
Name | Type | Description |
---|---|---|
parent
|
Allocator | The parent allocator is publicly accessible either as a direct member if it
holds state, or as an alias to Allocator otherwise. One may use
it for making calls that won't count toward statistics collection.
|
Properties
Name | Type | Description |
---|---|---|
bytesAllocated [get]
|
ulong | Read-only properties enabled by the homonym flags chosen by the
user.
|
bytesContracted [get]
|
ulong | Read-only properties enabled by the homonym flags chosen by the
user.
|
bytesExpanded [get]
|
ulong | Read-only properties enabled by the homonym flags chosen by the
user.
|
bytesHighTide [get]
|
ulong | Read-only properties enabled by the homonym flags chosen by the
user.
|
bytesMoved [get]
|
ulong | Read-only properties enabled by the homonym flags chosen by the
user.
|
bytesNotMoved [get]
|
ulong | Read-only properties enabled by the homonym flags chosen by the
user.
|
bytesSlack [get]
|
ulong | Read-only properties enabled by the homonym flags chosen by the
user.
|
bytesUsed [get]
|
ulong | Read-only properties enabled by the homonym flags chosen by the
user.
|
numAlignedAllocate [get]
|
ulong | Read-only properties enabled by the homonym flags chosen by the
user.
|
numAlignedAllocateOk [get]
|
ulong | Read-only properties enabled by the homonym flags chosen by the
user.
|
numAllocate [get]
|
ulong | Read-only properties enabled by the homonym flags chosen by the
user.
|
numAllocateOK [get]
|
ulong | Read-only properties enabled by the homonym flags chosen by the
user.
|
numDeallocate [get]
|
ulong | Read-only properties enabled by the homonym flags chosen by the
user.
|
numDeallocateAll [get]
|
ulong | Read-only properties enabled by the homonym flags chosen by the
user.
|
numExpand [get]
|
ulong | Read-only properties enabled by the homonym flags chosen by the
user.
|
numExpandOK [get]
|
ulong | Read-only properties enabled by the homonym flags chosen by the
user.
|
numOwns [get]
|
ulong | Read-only properties enabled by the homonym flags chosen by the
user.
|
numReallocate [get]
|
ulong | Read-only properties enabled by the homonym flags chosen by the
user.
|
numReallocateInPlace [get]
|
ulong | Read-only properties enabled by the homonym flags chosen by the
user.
|
numReallocateOK [get]
|
ulong | Read-only properties enabled by the homonym flags chosen by the
user.
|
Methods
Name | Description |
---|---|
alignedAllocate
(n, a)
|
Forwards to parent . Affects per instance: numAlignedAllocate ,
bytesUsed , bytesAllocated , bytesSlack , numAlignedAllocateOk ,
and bytesHighTide . Affects per call: numAlignedAllocate , numAlignedAllocateOk ,
and bytesAllocated .
|
allocate
(n)
|
Forwards to parent . Affects per instance: numAllocate ,
bytesUsed , bytesAllocated , bytesSlack , numAllocateOK ,
and bytesHighTide . Affects per call: numAllocate , numAllocateOK , and bytesAllocated .
|
byFileLine
()
|
Defined if perCallFlags is nonzero. Iterates all monitored
file/line instances. The order of iteration is not meaningful (items
are inserted at the front of a list upon the first call), so
preprocessing the statistics after collection might be appropriate.
|
deallocate
(b)
|
Defined whether or not Allocator is defined. Affects
per instance: numDeallocate , bytesUsed , and bytesSlack .
Affects per call: numDeallocate and bytesContracted .
|
deallocateAll
()
|
Defined only if Allocator is defined. Affects
per instance and per call numDeallocateAll .
|
empty
()
|
Defined only if Options is defined. Returns bytesUsed ==
0 .
|
expand
(b, delta)
|
Defined whether or not Allocator is defined. Affects
per instance: numExpand , numExpandOK , bytesExpanded ,
bytesSlack , bytesAllocated , and bytesUsed . Affects per call:
numExpand , numExpandOK , bytesExpanded , and
bytesAllocated .
|
owns
(b)
|
Increments numOwns (per instance and and per call) and forwards to parent .
|
reallocate
(b, s)
|
Defined whether or not Allocator is defined. Affects
per instance: numReallocate , numReallocateOK , numReallocateInPlace , bytesNotMoved , bytesAllocated , bytesSlack , bytesExpanded , and bytesContracted . Affects per call:
numReallocate , numReallocateOK , numReallocateInPlace ,
bytesNotMoved , bytesExpanded , bytesContracted , and
bytesMoved .
|
reportPerCallStatistics
(output)
|
Defined if perCallFlags is nonzero. Outputs (e.g. to a File )
a simple report of the collected per-call statistics.
|
reportStatistics
(output)
|
Reports per instance statistics to output (e.g. stdout ). The
format is simple: one kind and value per line, separated by a colon, e.g.
bytesAllocated:7395404
|
Inner structs
Name | Description |
---|---|
PerCallStatistics
|
Defined if perCallFlags is nonzero.
|
Aliases
Name | Description |
---|---|
alignment
|
Alignment offered is equal to Allocator .
|
Example
import std .experimental .allocator .building_blocks .free_list : FreeList;
import std .experimental .allocator .gc_allocator : GCAllocator;
alias Allocator = StatsCollector!(GCAllocator, Options .all, Options .all);
Allocator alloc;
auto b = alloc .allocate(10);
alloc .reallocate(b, 20);
alloc .deallocate(b);
import std .file : deleteme, remove;
import std .range : walkLength;
import std .stdio : File;
auto f = deleteme ~ "-dlang.std.experimental.allocator.stats_collector.txt";
scope(exit) remove(f);
Allocator .reportPerCallStatistics(File(f, "w"));
alloc .reportStatistics(File(f, "a"));
writeln(File(f) .byLine .walkLength); // 24
Authors
License
Copyright © 1999-2022 by the D Language Foundation | Page generated by ddox.