不要 new 一个 char 数组当缓冲区

💡 原文中文,约800字,阅读约需2分钟。
📝

内容提要

性能调优研究表明,使用std::make_unique<char[]>分配内存时,尽管编译器进行了优化,但仍会调用memset,导致效率低下。改用malloc后,性能提升显著。结论是,在不需要初始化的情况下,malloc优于new。

🎯

关键要点

  • 性能调优研究发现,使用std::make_unique<char[]>分配内存时效率低下。
  • std::make_unique不仅分配内存,还会初始化char对象,导致性能问题。
  • 即使编译器优化为memset,调用memset仍然消耗时间。
  • 将内存分配改为malloc后,性能提升显著,达到十几倍。
  • 结论是,在不需要初始化的情况下,malloc优于new。
➡️

继续阅读