gpt4 book ai didi

optimization - 在循环内与循环外分配内存

转载 作者:行者123 更新时间:2023-12-03 16:28:22 24 4
gpt4 key购买 nike

在每次循环迭代中分配大块堆内存是否有明显的性能损失?当然,我会在每次迭代结束时释放它。

另一种方法是在进入循环之前分配一次,在所有迭代中重复使用它,并最终在退出循环后释放它。请参阅下面的代码。

// allocation inside loop
for(int i = 0; i < iter_count; i++) {
float *array = new float[size]();
do_something(array);
delete []array;
}

// allocation outside loop
float *array = new float[size]();
for(int i = 0; i < iter_count; i++) {
do_something(array);
}
delete []array;

最佳答案

我永远不会在循环内这样做。分配内存不是免费事件,做一次就是绝对宁愿一遍又一遍地做。
你也可以只分配不带括号的数组,你应该没问题:

float *array = new float[size];

关于optimization - 在循环内与循环外分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3412003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com