问题标签 [memory-efficient]

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 投票
14 回答
127344 浏览

c# - 在 C# 中将字段标记为“只读”有什么好处?

将成员变量声明为只读有什么好处?它只是防止有人在类的生命周期内改变它的值,还是使用这个关键字会带来任何速度或效率的提高?

0 投票
5 回答
1351 浏览

perl - 捕获稀疏矩阵的非零元素、计数和索引

我有以下稀疏矩阵A。

然后我想从那里捕获以下信息:

  1. 条目的累积计数,因为矩阵是按列扫描的。产量:

    Ap = [ 0, 2, 5, 9, 10, 12 ];

  2. 条目的行索引,因为矩阵是按列扫描的。产量:

    Ai = [0, 1, 0, 2, 4, 1, 2, 3, 4, 2, 1, 4];

  3. 非零矩阵条目,因为矩阵是按列扫描的。产量:

    Ax = [2, 3, 3, -1, 4, 4, -3, 1, 2, 2, 6, 1];

由于实际矩阵 A 可能非常大,Perl 中是否有任何有效的方法可以捕获这些元素?尤其是在没有将所有矩阵 A 放入 RAM 的情况下。

我被以下代码困住了。这没有给我想要的。

0 投票
4 回答
4598 浏览

algorithm - 计算大型数据集中位数的内存高效方法?

如果一台计算机只能容纳 100 万个数字,如何从 1 亿个数字中找出中位数?

0 投票
2 回答
1258 浏览

java - 按需将数据从文件加载到集合的最有效方法是什么?

我正在开发一个 java 项目,该项目将允许用户解析可能有数千行的多个文件。解析的信息将存储在不同的对象中,然后将其添加到集合中。

由于 GUI 不需要一次加载所有这些对象并将它们保存在内存中,因此我正在寻找一种从文件加载/卸载数据的有效方法,以便仅在用户请求时将数据加载到集合中.

我现在只是评估选项。我还考虑过这样一种情况,在将数据子集加载到集合中并将其呈现在 GUI 上之后,重新加载先前观察到的数据的最佳方式。重新运行解析器/填充集合/填充 GUI?或者可能找到一种方法将集合保存到内存中,或者序列化/反序列化集合本身?

我知道如果执行某种数据过滤,加载/卸载数据子集会变得很棘手。假设我过滤了 ID,所以我的新子集将包含来自之前分析的两个子集的数据。这没问题,因为我将整个数据的主副本保存在内存中。

我读过 google-collections 在处理大量数据时既好又高效,并提供了简化很多事情的方法,因此这可能提供一种替代方法,让我可以将集合保存在内存中。这只是泛泛而谈。关于使用什么集合的问题是一个单独且复杂的事情。

你知道这类任务的一般建议是什么吗?我想听听你对类似场景做了什么。

如果需要,我可以提供更多细节。

0 投票
2 回答
214 浏览

r - R中整洁/高效的函数编写(垃圾收集)

请原谅我的无知,因为我不是计算机工程师,而是生物学。我已经成为预分配对象的忠实拥护者(Patrick Burns 对 SO 和 R inferno 的赞誉),并希望改善我的编码习惯。代替这个事实,我一直在考虑编写更有效的函数并有以下问题。

删除将在下一个循环开始时被覆盖的变量有什么好处,或者这只是浪费时间?为了论证,我们假设新旧变量的大小非常相似或相同。

0 投票
2 回答
1036 浏览

c# - 内存高效文件追加

我有几个文件的内容需要合并到一个文件中。我有以下代码可以做到这一点......但在内存使用方面似乎相当低效......你会建议一个更好的方法吗?

Util.MoveFile 函数只是考虑跨卷移动文件

}

0 投票
4 回答
219 浏览

javascript - 什么更有效率?检查 == 还是只是改变变量?

想象一下,我有一个名为 X 的变量。假设每 5 秒我想让 X = true。(在这 5 秒之间可能为真或假,但在 5 秒结束时重置为真)。

检查该值是否已经为真,如果不是,则将其重新分配为真会更有效吗?还是只有 X = true?

换句话说,哪个会跑得更快?

对比

一方面,如果不需要,第一个程序不会改变变量。另一方面,第二个程序不需要检查 X 等于什么;它直接潜入。

0 投票
4 回答
11924 浏览

java - 构建高效的数独求解器

是的,我知道这不是什么新鲜事,而且已经有很多问题(它甚至有自己的标签),但我想用 Java 创建一个数独求解器,只是为了训练自己编写更多的代码高效的。

在程序中执行此操作的最简单方法可能是通过大量的 for 循环解析每一列和每一行,收集每个单元格的可能值,然后以一种可能性(无论它们是否只包含 1 个数字,或者它们是行/列中唯一包含此数字的单元格),直到您解决了难题。当然,对动作的纯粹思考应该在每个程序员的脑海中升起一面红旗。

我正在寻找的是以最有效的方式解决这个傻瓜的方法(请尽量不要包含太多代码 - 我想自己弄清楚那部分)。

如果可能的话,我想避免使用数学算法——那些太容易了,而且 100% 不是我的工作。

如果有人可以提供一个逐步、有效的思维过程来解决数独难题(无论是由人还是计算机),我会非常高兴:)。我正在寻找一些模糊的东西(所以这是一个挑战),但信息量足够大(所以我并没有完全迷失)让我开始。

非常感谢,

贾斯蒂安·迈耶

编辑:

看着我的代码,我开始思考:存储这些求解状态(即数独网格)的一些可能性是什么。我想到了 2D 阵列和 3D 阵列。哪个可能是最好的?2D 可能更容易从表面管理,但 3D 阵列也会提供“盒子”/“笼子”编号。

编辑:

没关系。我将使用 3D 数组。

0 投票
4 回答
5946 浏览

graph - 保持图形的有效方法(二维数组)

就内存空间或构建时间而言,有谁知道保留图形信息的更有效方法(即比将其保留为二维数组更有效)?

您可以假设它的值限制在 0-255 之间。

谢谢!

0 投票
10 回答
3359 浏览

python - Python(或C)中的内存高效字符串到字符串映射

我需要一个内存高效的数据结构来存储大约一百万个键值对,其中键是大约 80 字节的字符串,值是大约 200 字节的字符串,键和值的总大小约为 280MB。我还需要通过键有效地查找值,最好是哈希映射。内存开销应尽可能小,例如对于 280MB 的有用数据,数据结构不应使用超过 300MB 的虚拟内存(包括malloc()开销和其他一切)。使用模式如下:我们从一个空的数据结构开始,逐渐填充它,从不改变键,从不改变值的长度。另外,数据结构可以支持更改值的长度,但代价是 100% 的值开销(这意味着对于 x 值字节,x 字节可能会暂时浪费在未使用的缓冲区空间中)。

我需要一个纯 Python 模块,或者一个内置的 Python 模块,或者一个最好带有 (C)Python 绑定的 C 实现。如果有可能将整个数据结构序列化到磁盘,并且可以非常快速地读回它,我会更喜欢。

只是为了证明这么小的开销是可能的,我创建了一个开放寻址的简单设计,125 万个元素的哈希表包含指向 1MB 数据块的 4 字节指针,数据块包含键和值长度作为基础-128 个变量。这种设计有一个重要的限制:它不允许在不浪费内存区域的情况下删除或更改对。根据我对 100 万个每个 280 字节的键值对的计算,开销小于 3.6%(10 080 000 字节)。上面的限制更加慷慨,它们允许 20 000 000 字节的开销。

我刚刚找到http://www.pytables.org/,它提供了快速访问和内存高效的数据打包。我必须更仔细地检查它是否适合我的需要。