问题标签 [pre-allocation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
87 浏览

matlab - 嵌套结构数组的预分配

我正在尝试预先分配一个统一嵌套的结构数组。

我目前正在使用 for 循环为数组分配值,但我知道如果数组没有被预先分配,这会很慢。

我试图实现的结构由以下代码生成:

稍后将在 for 循环中替换零值。

0 投票
3 回答
747 浏览

c# - 如何预先分配 T 列表的 C# 列表

我想预先分配一个List<List<double>>. 我知道我可以像这样预先分配一维列表:

是否可以对嵌套列表执行此操作?在 C++ 中,我会这样做:

我似乎找不到在 C# 中执行此操作的有效方法,但我确信有一种方法......

0 投票
1 回答
82 浏览

arrays - Modelica mos 脚本中数组大小的预分配

我正在 Dymola 中编写一个mos脚本,在其中我动态计算循环内的数组元素。大量信息打印在命令窗口上。每次打印

等等。我不想每次都“重新声明”我的数组,我只想“填充”它。数组大小的预分配会解决这个问题吗?如果是这样,我如何在 mos 脚本中预分配数组?我尝试了不同的方式,比如

Dymola 会为此引发错误。所以我的问题是 1)mos 脚本中的数组预分配 2)抑制命令输出。有人能帮我吗?谢谢

0 投票
0 回答
205 浏览

r - 为R中未知大小的列表预分配内存

我对R中的预分配感到困惑。我们都知道预分配会快得多,并且可以解决内存过多的问题。但是,如果我们想获得一个未知长度的列表,我们应该分配更长的长度吗?或者我们可以分配一个“合适的”长度,如果列表的最终长度超过分配的长度,我们可以将扩展元素附加到列表中。例如,我们假设最终列表的长度为 20000。

第一种方法是:

第二种方法是:

哪一个会更好?或者如果您有更好的想法,请告诉我?谢谢。

0 投票
2 回答
87 浏览

matlab - 为什么空数组可以有非空维度?

如果我们写,例如:

whos x输出:

因此,我们获得了一个0x5空数组 class int8

如果其内存大小为 0 字节,则预分配包含非空维度的空数组的目的是什么?

在这种情况下

比有用

是否int8.empty(0,5)仍预先分配 5 个“插槽”的内存?

0 投票
0 回答
36 浏览

matlab - 如何在matlab中预分配VideoWriter文件

VideoWriter我的代码使用该函数在 for 循环中生成 10 个视频。我知道如何预分配数组,但我不确定如何对 VideoWriter 文件进行预分配。下面代码中的 writerObj 文件应该是预先分配的。

0 投票
0 回答
33 浏览

foreach - 预分配是否有助于与 R 中的 foreach 并行化?

在使用 for 循环时,我经常遇到这样的建议,即应该预先分配一个对象并“填充”它,而不是让对象在 for 循环中“增长”。这个经验法则是否也适用于 foreach 的使用?

举一个荒谬的简单示例,假设我想在每次蒙特卡洛绘图中采样一个长度为 3 的向量,并将每个向量存储在输出矩阵的每一行中。(在我的实际代码中,我对每次绘制进行一系列操作,计算结果出现在另一个矩阵中的次数,然后将该数字保存在我的最终输出中。但我认为这与我的问题无关。 )

在这种情况下,预分配对 foreach 有帮助吗?我担心的是,输出矩阵一旦被创建为一个大矩阵,然后被 foreach覆盖(而不是填充),因此只会浪费时间和内存。

0 投票
1 回答
37 浏览

matlab - 如何在 Matlab 中为“while”循环预分配矩阵?

我想在 matlab 中预分配一个矩阵以消除内存不足错误,但是我如何使用预分配进行 while 循环?我们对这样的 for 循环使用预分配:

但是如果我想在一段时间循环中执行此操作怎么办

0 投票
2 回答
80 浏览

arrays - 在 Matlab 中有效地存储一个大部分为零的 N 维数组

我实现了一个有限差分算法来求解 PDE。

网格是大小为 [Nx, Nz] 的结构化二维域,求解 Nt 次。

我预先分配了包含所有解决方案的对象:

这很容易变得太大,并且出现“内存不足”错误。不幸的是sparse,它不适用于 N 维数组。

对于这个问题,知道这些值并不重要,不用说,RAM 使用量会随着网格间距的减小和模拟时间的增加而呈指数增长。

我知道我不需要为了解决方案的进步而存储每个时间瞬间。只存储前两个时间步就足够了。但是,出于后处理的原因,我需要在所有时间步长(或至少是总数的约数)访问解决方案。它可能有助于指定,即使在解决方案之后,网格仍然主要由零填充.

我是在打一场失败的战斗还是有更有效的方式来进行(其他类型的对象,矢量化......)?

谢谢你。