Growing Buffers to Avoid Copying Data
a year ago
- #memory-management
- #performance
- #C++
- Johnny’s Software Lab LLC 专注于软件性能优化。
- 避免数据复制对性能至关重要,尤其是在C++和操作系统环境中。
- C++缺乏内置的realloc函数,这使得在不复制数据的情况下调整缓冲区大小变得复杂。
- 提出的resize_buffer函数可能有助于避免C++中不必要的数据复制。
- Linux使用mmap和mremap进行内存分配和调整大小,需要谨慎管理地址。
- Windows没有mremap,但可以使用VirtualAlloc实现类似功能,尽管需要更多手动管理。
- jemalloc提供了xallocx用于缓冲区调整大小,这是标准C库中不具备的功能。
- 实验表明,在调整缓冲区大小时避免数据复制可以显著提高性能。
- 潜在问题包括系统特定行为、静默失败和虚拟内存碎片化。
- 尽管存在挑战,但在某些场景下避免数据复制对性能是有益的。