2

我的意思是 - 分配小内存块比分配大内存块更快吗?IE:

int * dummy = new int;    // A
int * dummy2 = new int[2];    // A
int * dummy3 = new int[1000000];    // B
VeryVeryBigStruct * dummy4 = new VeryVeryBigStruct;    // B

(A)将是小的分配,(B)将是大的。

我知道我可以编写一个简单的程序并自己测试它,但我实际上尝试甚至QueryPerformanceCounter()返回0了单个小分配的时间(这有点令人惊讶,因为所有分配都被认为如此缓慢。此外,在一台计算机上进行 1 次测试几乎不可靠所以我想听听你对此事的了解。

另外,我想知道 10 个字节分配N是否比 110 * N个字节分配更快/更慢(我会说它应该更慢但谁知道)。

4

1 回答 1

3

取决于操作系统。不过,总的来说,它不应该有很大的不同,因为像 Linux 之类的系统(我假设是现代 Windows 等)使用惰性分配。即,它们分配虚拟内存空间而不实际分配物理内存,直到您访问它。

您可以在其他 SO 帖子中查看更多详细信息:

malloc 是否会为 Linux(和其他平台)上的分配懒惰地创建支持页面?

于 2013-09-08T12:36:22.890 回答