mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-19 19:10:17 +00:00
add memory info api
This commit is contained in:
parent
e11e888acd
commit
fc98c526ea
@ -22,4 +22,7 @@ void* pool128_alloc() noexcept{
|
||||
|
||||
void pools_shrink_to_fit() noexcept;
|
||||
|
||||
std::string pool64_info() noexcept;
|
||||
std::string pool128_info() noexcept;
|
||||
|
||||
}; // namespace pkpy
|
||||
|
@ -235,6 +235,37 @@ struct MemoryPool{
|
||||
});
|
||||
}
|
||||
|
||||
std::string info(){
|
||||
int n_used_arenas = _arenas.size();
|
||||
int n_total_arenas = n_used_arenas + _empty_arenas.size();
|
||||
int n_used_blocks = 0;
|
||||
int n_total_blocks = n_total_arenas * __MaxBlocks;
|
||||
size_t allocated_size = 0;
|
||||
size_t total_size = 0;
|
||||
_arenas.apply([&](Arena* arena){
|
||||
allocated_size += arena->allocated_size();
|
||||
total_size += __BlockSize * __MaxBlocks;
|
||||
n_used_blocks += __MaxBlocks - arena->_free_list_size;
|
||||
});
|
||||
_empty_arenas.apply([&](Arena* arena){
|
||||
total_size += __BlockSize * __MaxBlocks;
|
||||
});
|
||||
char buffer[512];
|
||||
snprintf(
|
||||
buffer,
|
||||
sizeof(buffer),
|
||||
"MemoryPool<%d>: %.2f/%.2f MB - %d/%d arenas - %d/%d blocks",
|
||||
__BlockSize,
|
||||
(float)allocated_size / (1024*1024),
|
||||
(float)total_size / (1024*1024),
|
||||
n_used_arenas,
|
||||
n_total_arenas,
|
||||
n_used_blocks,
|
||||
n_total_blocks
|
||||
);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
~MemoryPool(){
|
||||
_arenas.apply([](Arena* arena){ delete arena; });
|
||||
_empty_arenas.apply([](Arena* arena){ delete arena; });
|
||||
@ -255,4 +286,7 @@ void pools_shrink_to_fit() noexcept {
|
||||
pool128.shrink_to_fit();
|
||||
}
|
||||
|
||||
std::string pool64_info() noexcept { return pool64.info(); }
|
||||
std::string pool128_info() noexcept { return pool128.info(); }
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user