问题标签 [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.
javascript - javascript 变量的长度可以为 2Mb 吗?
我从一开始就有纽约时报所有文章的列表,并且希望在不连接到外部数据库的情况下立即访问所有文章,所以我的解决方案是将它保存在一个变量中。但就效率而言,这不是一种不好的做法吗?
c# - Write and stream a templated Xml as efficiently as possible
I am trying to find the best solution to prevent us to allocate too much memory when building an Xml document. I have to construct a fairly large Xml with the less resource possible (the web service must be able to handle hundreds of calls per seconds). The structure of the Xml itself doesn’t change much, however the data consistently change. My current solution is XDocument and XElement (LINQ). Below is a quick sample of what I am doing today:
When the Xml document becomes too large, instantiating an XDocument and many hundreds of XElement becomes very expensive and the number of calls per second drops. I am currently thinking of creating some sort of template engine that would simply stream the strings (XElement) without instantiating any objects. How would you do that? Is that the right thing to do?
android - android节省资源-运行多个服务
所以,我必须为不同的任务运行多个服务。但是,重复值是相同的。这意味着服务每 x 秒发送一次广播(它们有相同的 x)。现在:对系统/电池更有效的是:运行多个服务,或者将它们放在一个中,这会导致服务也发送并不总是在接收活动中使用的数据(每 x 秒广播一次的更大意图)谢谢提前
python - Python gzip - 提取 .csv.gz 文件 - 内存错误
我试图编写一个脚本来从 ftp 服务器访问 .csv.gz 文件,并将内容写入同一服务器上的 .csv 文件。只要文件小于 100mb,这种方法似乎就可以正常工作,但如果它失败,则会出现内存错误。我无法找到仅提取 .csv 文件的方法,因此它逐行读取文件内容(元组列表)并将其写入新文件。
有没有更有效的方法来做到这一点,甚至是直接从 .csv.gz 文件中提取 .csv 文件的方法?
android - 使用 cursor.getCount() 获取计数或在 SQL 子句上使用 COUNT 执行 rawQuery?
什么在内存效率方面会更好,或者在 Android 和 SQLite 上具有最佳的整体性能,使用 cursor.getCount() 获取记录计数或在普通 SQL 子句上使用 COUNT 执行 rawQuery(并使用 cursor.getInt (0)稍后获得返回的计数)?
注意:我没有使用结果,我只想要计数。
c - 数组验证 - 不使用辅助数组
这个问题是针对真正的聪明人的,因为它应该在没有辅助阵列的情况下完成,并且必须是最有效的!
C 程序 - 需要接收一个包含 X 个数字的数组(假设 X=4 数组:5,4,3,2)并检查数组是否包含从 0 到 X-1 的所有数字(如果 X 是 44,则需要检查如果数组内的所有数字都在 0 到 43 之间)。
它必须非常高效——我的意思是,在阵列上运行 43 次不是一种选择!
你知道怎么做吗?我试图弄清楚这个几个小时而没有任何成功!
它必须是 O(n)。
ruby-on-rails - 优化 Rails 查询和关联
我的应用程序中有以下关联:
当我尝试访问用户喜欢的所有帖子时,我正在使用以下循环
但这似乎效率很低。
使用不同的关联或不同的循环方式来改进我的代码的最佳方法是什么?
objective-c - NSScrollView 无限/无限滚动 | 子视图重用
我正在寻找一种方法来实现类似可重用单元的方法,UI/NSTableView
但对于NSScrollView
. 基本上,我想要 WWDC 2011 视频“Session 104 - Advanced Scroll View Techniques”,但对于 Mac。
我有几个问题意识到这一点。第一个:NSScrollView
没有-layoutSubviews
。我尝试-adjustScroll
改用,但未能设置不同的contentOffset
:
接下来我尝试设置一个具有width
数百万像素的非常大的内容视图(这实际上与 iOS 相比有效!)但现在的问题是,如何安装重用池?
在滚动到新位置时移动子视图还是删除所有子视图并再次插入它们更好?我应该如何以及在哪里这样做?
java - 什么更有效率?清空对象或创建新对象?
“新”有多贵?我的意思是,我应该以重用同一个对象为目标,还是该对象“超出范围”与清空它一样?
例如,假设一个方法创建了一个列表:
在方法结束时,列表不再使用 - 这是否意味着不再为其分配内存,或者是否意味着有一个空指针指向它(因为它是“创建的”)。
或者,我可以向该方法发送一个“列表”并在方法结束时将其清空:list.removeAll(list);
从内存的角度来看,这会有什么不同吗?
谢谢!
java - 内存高效的多值映射
嗨,我有以下问题:我正在存储字符串和相应的整数值列表,MultiValueMap<String, Integer>
我正在存储大约 130000 亿个字符串,一个字符串最多可以有 500 个或更多值。对于每一个值,我将在地图上随机访问。所以最坏的情况是 13 000 000 * 500 个看跌期权。现在地图的速度很好,但内存开销变得相当高。AMultiValueMap<String, Integer>
什么都不是,然后 a HashMap/TreeMap<String, <ArrayList<Integer>>
。HashMap 和 TreeMap 都有相当多的内存开销。完成后我不会修改地图,但我需要它快速且尽可能小,以便在程序中进行随机访问。(我将它存储在磁盘上并在启动时加载它,序列化的地图文件占用大约 600mb 但在内存中大约 3gb?)
最节省内存的事情是,将字符串存储在已排序的字符串数组中,并为值提供相应的二维 int 数组。因此访问将是对字符串数组的二进制搜索并获取相应的值。
现在我有三种方法可以到达那里:
我在创建阶段使用排序的 MultivalueMap (TreeMap) 来存储所有内容。在完成获取所有值之后,我通过调用
map.keyset().toArray(new String[0]);
Make a 二维 int 数组来获取字符串数组,并从 multivaluemap 中获取所有值。优点:很容易实现,在创建过程中仍然很快。缺点:在从 Map 复制到 Arrays 的过程中,它占用了更多的内存。我从一开始就使用 Arrays 或 ArrayLists 并将所有内容存储在其中 Pro:内存开销最小。缺点:这将非常慢,因为每次添加新键时我都必须对数组进行排序/复制,而且我需要实现自己的(可能更慢)排序以保持相应的 int 数组的顺序相同,例如字符串。难以实施
我使用数组和 MultivalueMap 作为缓冲区。在程序完成 10% 或 20% 的创建阶段后,我会将值添加到 Arrays 并保持它们的顺序,然后启动一个新的 Map。优点:可能仍然足够快且内存足够高效。缺点:难以实施。
这些解决方案对我来说都不合适。你知道这个问题的任何其他解决方案,也许是内存高效的 (MultiValue)Map 实现?
我知道我可能正在使用数据库,所以不要费心将其发布为答案。我想知道如何在不使用数据库的情况下做到这一点。