Hasty Briefsbeta

双语

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库中不具备的功能。
  • 实验表明,在调整缓冲区大小时避免数据复制可以显著提高性能。
  • 潜在问题包括系统特定行为、静默失败和虚拟内存碎片化。
  • 尽管存在挑战,但在某些场景下避免数据复制对性能是有益的。