当使用 malloc 分配内存时,对较小的数据 block 进行多次 malloc 还是对较大的数据 block 进行较少的 malloc 通常更快?例如,假设您正在处理一个包含黑色像素和白色像素的图像文件。您正在遍历像素并希望将每个黑色像素的 x 和 y 位置保存在一个新结构中,该结构还具有指向下一个和上一个像素 x 和 y 值的指针。使用指针为每个黑色像素的 x 和 y 值分配一个新结构来遍历像素通常会更快,还是通过遍历一次来计算黑色像素的数量,然后分配一个大的使用仅包含 x 和 y 值但不包含指针的结构的内存块,然后再次迭代,将 x 和 y 值保存到该数组中?我假设某些平台在哪个更快方面可能与其他平台不同,但每个人都认为什么通常会更快?
最佳答案
这取决于:
- multiple small times就是多次,比较慢
- 可能有针对小额分配的特殊/快速实现。
如果我在乎,我会测量它!如果我真的很关心并且无法猜测,那么我可能会同时实现这两者,并在目标机器上运行时进行测量,并相应地进行调整。
一般来说,我会假设越少越好:但是存在大小和运行时库实现,这样(足够)大的分配将被委托(delegate)给(相对较慢的)O/S。而(足够)小的分配将从(相对快速的)已经分配的堆中提供服务。
关于c++ - malloc 多个小时间或几个大时间更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1094215/