内存初始化/删除这么耗时吗?

问题描述 投票:0回答:1

我有一些小型实体,其中包含一些 int 字段和 50 个 int 的二维数组字段。没什么特别的。

我生成了很多(数百万个这样的实体),每个实体都是不同的:数组不同,字段也不同。 令我惊讶的是,我发现不每次都创建新实体而只是重用现有实体并将其设置为 0 的速度要快 2 倍以上 字段和数组。内存初始化/删除这么耗时吗?

c++ constructor initialization
1个回答
5
投票

存在与对象的内存管理相关的开销。这可能会导致速度减慢。

了解的最好方法就是计时,就像您所做的那样。
有时它不会打扰你,有时你会对此非常敏感。

想想哪个循环会更快:

while (/* not done */) {
    Ask system for memory
    Create object
    Write into object
    Destroy object
}

while (/* not done */) {
    Write into object
}
© www.soinside.com 2019 - 2024. All rights reserved.