问题标签 [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.
php - 在 PHP 中存储大量布尔值的高效内存方法
我正在寻找一种在 PHP 内存中存储大量布尔值(最多 2.5*10e11)的有效方法。我的第一个想法是创建一个整数数组并在每个整数中存储一个布尔值:
但是,这种解决方案的开销仍然太大:在 32 位环境(PHP_INT_SIZE = 4 字节)中存储 10^8 个布尔值(位)需要 3125000 个整数的数组,消耗约 254 MB 内存,而罕见的10^8 个布尔值的数据只需要 ~ 12 MB。
那么在 PHP (5) 中存储大量布尔值的最佳方式是什么?
java - Java 中 String 的内存高效、低开销替换
在阅读了这个老问题的答案后,我有点想知道现在是否有任何框架可以比java.lang.String
.
如果可能的话,我想使用 byte[] 而不是 char[] 来存储表示字符串。
我的String
(s)将是常量,并且我并不真正需要java.lang.String
类提供的大量实用程序方法。
memory - 在有限内存上顺序存储可变长度对象的最佳数据结构
我在 MCU 上有有限的固定内存量,我应该在上面存储一些对象。内存量非常小,我必须在程序开始时分配所有内存用于存储对象(我不能使用动态内存分配)。
每个对象由多个属性组成,我们可以随时为任何对象添加或删除任意数量的属性。属性长度是可变的,因此对象的长度可能会不时变化。修改此属性时,属性的大小可能会发生变化。
对存储对象的关键操作是搜索和读取属性值。
现在,我正在寻找解决我的问题的最佳方法和最佳数据结构(速度快、元数据不多、内存写入少、搜索开销小)。
任何想法?
performance - 面向对象、面向数据、缓存污染和缓存明显性
在常规的面向对象实践中,很少有对象具有多个不相关的成员属性。并且在处理对象时,在不同的通道中完成并针对其属性的不同部分进行处理的情况并不少见。
在这方面,创建对象集合的典型方法似乎不是一种非常有效的方法。考虑到计算机访问内存的方式和高速缓存行的平均大小,高速缓存很有可能被不需要的内存填满,而只是碰巧相邻,因此最终浪费了缓存的容量并增加了停顿和执行延迟。
更糟糕的是使用多态性和动态分配对象的做法,没有内存池和自定义分配器。在这种情况下,不仅高速缓存充满了不需要的数据,而且由于动态内存分配使用的任意地址,预取器也无法充分工作。
拯救是回到 OOP 之前的时代并选择面向数据,这似乎是开发性能关键应用程序、操作系统等的偏好选择。但是为什么不使用两者的混合版本呢?面向数据的对象编程排序?
经过这么长的序曲,让我们来看看手头的问题。我没有足够庞大的项目来测试这个概念的效率,因此非常欢迎社区的理论专业知识。
如果对象不存储自己的数据成员,它们只存储对集合的引用,它们的数据成员按顺序存储在自己的容器中,并且它们的成员方法从这些容器返回数据,这样不需要的数据结束的几率应该减少到 CPU 的路上,并且增加在不久的“未来”需要的数据的几率。合乎逻辑的假设是,这种方法将提高预取器效率、缓存命中率和使用效率,还将减少自动和手动并行化所涉及的延迟。
你怎么看?
后期编辑:如果我们考虑结构和类填充,则应用“数据定向模式”可能会更有益,如果“模型”具有 achar
和 aint
数据成员,则在 OOP 方式中它将被填充,这只会造成污染进一步缓存,但是面向数据的存储模式可以将所有char
s和所有int
s顺序存储,完全没有空间和缓存浪费。
java - 越来越消耗内存的简单 Java 程序
我有这个简单的 Java 代码,它创建一个 JFrame 实例并显示它。此链接包含 jconsole 拍摄的内存消耗图的屏幕截图
让我担心的是,任务管理器中的 java.exe 显示内存使用量以每 8-9 秒 4-5 kbs 的速度持续增加。需要帮忙
objective-c - 在运行时加载 Objective C 类别有什么意义?
是吗:
为了提高内存效率,不必一直将所有程序的方法存储在 RAM 中?如果是这样,这真的是一个普遍的问题吗?我觉得必须加载新方法的开销会抵消正常大小程序的内存节省,尽管我可以看到它对非常大的程序有什么帮助。
为了增加灵活性?如果是这样,你能举一个例子吗?我发现很难想出一个。
我一直在尝试用谷歌搜索这个问题的答案,但似乎只找到有关如何使用类别而不是为什么使用的资源。如果你们中的任何一个人能指出我正确的方向,那就太棒了。
java - 有效地查找一组数字中的组合
我目前正在开发一个java项目,我需要其中的一部分来给我一个完整的数字组合列表,
1<= A<=B<=C<=D<=E<=F<=N
其中N
任何整数as small as 75
都将被用作输入。只要它A B C D E F
可以。any integer
fulfills the equality
我知道我可以简单地使用每个组合,brute force
但这需要很长时间。我想做的是以一种仍然满足原始方式split
的平等化为two separate
平等,但它会减少几乎一半的运行。
algorithm - 无特定形式的极大整数的素性证明算法
我正在寻找一种算法,它可以证明任何大数的素数。大数是指其中至少有 100,000,000 个十进制数字的数字,不能用梅森素数等简单的公式表示。
以下是我的要求:
1-它必须完全正确
2-它必须可以在基本的家用计算机上运行
3- 它必须在几周或几个月内完成它的课程。
我的内存限制是 8 GB 的内存(我可以设置我的选项来决定有多少缓存可用),在具有 1 TB 硬盘驱动器的专用机器上。在几个月的时间里,我将一次次考虑排名第一。
Edit1:我很清楚这是一个很难竞争的竞技场,如果使用当前的方法几乎不可能的话。我没有使用当前的方法,我需要一种方法来证明我的方法对于非常大的数字是正确的。
Edit2:我需要一种非概率方法的部分原因是因为这将是对 EFF 奖项的尝试,并且在那里成功获得第二个 EFF 奖项。如果我的方法是正确的(这是一个按喇叭的 IF),我应该可以用我的笔记本电脑完成所有这些工作。
xslt - 有效的 xslt 条件增量
在这个问题中,我询问了如何执行条件增量。提供的答案有效,但在庞大的数据集上不能很好地扩展。
输入:
期望的输出(在最佳时间复杂度下):
为此,最好
- 按用户名排序输入
- 对于每个用户
- 当以前的用户名等于当前用户名时
- 递增计数器和
- 将用户名设置为 '$username$counter'
- 除此以外
- 将计数器设置为 1
- 当以前的用户名等于当前用户名时
- (再次按 id 排序 -无要求)
有什么想法吗?