mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 11:30:18 +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;
|
void pools_shrink_to_fit() noexcept;
|
||||||
|
|
||||||
|
std::string pool64_info() noexcept;
|
||||||
|
std::string pool128_info() noexcept;
|
||||||
|
|
||||||
}; // namespace pkpy
|
}; // 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(){
|
~MemoryPool(){
|
||||||
_arenas.apply([](Arena* arena){ delete arena; });
|
_arenas.apply([](Arena* arena){ delete arena; });
|
||||||
_empty_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();
|
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