use*_*293 5 c c++ memory algorithm
当使用malloc分配内存时,通常可以更快地执行多个较小数据块的malloc或更少的大块数据malloc吗?例如,假设您正在处理具有黑色像素和白色像素的图像文件.您正在迭代像素,并希望将每个黑色像素的x和y位置保存在一个新结构中,该结构还具有指向下一个和前一个像素x和y值的指针.迭代通过为指针分配每个黑色像素的x和y值的新结构的像素通常会更快,或者通过迭代一次获得黑色像素数的计数会更快,然后分配一个大的使用仅包含x和y值但没有指针的结构的内存块,然后再次迭代,将x和y值保存到该数组中?我假设某些平台可能与其他平台不同,哪个更快,但每个人认为通常会更快?
Chr*_*isW 20
这取决于:
如果我关心,我会测量它!如果我真的非常关心,并且无法猜测,那么我可以实现两者,并在目标机器上的运行时进行测量,并相应地进行调整.
一般来说,我认为越少越好:但是有大小和运行时库实现,这样(足够)大的分配将被委托给(相对慢的)O/S. 而(一个(足够)小的分配将从(相对快速的)已分配的堆中提供.
Nic*_*wis 14
分配大块更有效; 此外,由于您使用较大的连续块,因此您具有更大的引用位置,并且在生成内存结构后遍历您的内存结构也应该更高效!此外,分配大块应该有助于减少内存碎片.
通常来说,分配更大的内存块更少的时间会更快。每次调用malloc()都会涉及开销。
归档时间: |
|
查看次数: |
3072 次 |
最近记录: |