问题标签 [memory-optimization]

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 回答
54 浏览

python - 我应该从服务器检索多少个对象,多少个对象可以存储在 NSCache 中?

我的服务最多返回 500 个对象,我注意到当数据量超过 60 个对象时,我的 iphone 应用程序崩溃了。为了解决这个问题,我正在运行一个只返回前 40 个结果的查询,但这比只返回整个数据要慢

  1. 最佳实践是什么?如何检索更多对象?
  2. iphone中分配给应用程序的最大内存量是多少,有没有办法扩展它?
  3. 我应该从服务器检索多少对象
  4. NSCache 中可以存储多少?
0 投票
2 回答
811 浏览

java - C#结构内存优化?

我有一个试用期的工作面试(?我不确定这是不是这个词),面试官让我告诉他结构和班级之间有什么区别。

所以我告诉他我知道的一切以及我在 msdn 上读到的一切。

那家伙说“不够”,我没有头绪。于是他说:

结构体已经过优化,所以如果存在整数和浮点数,它们有一些相同的部分,那么它将节省这个空间,所以结构体 int=0float=0大小是int=int.MAX,的一半float=float.MIN

好的。所以我就像 - 没听说过。

但是,在面试之后,我正在考虑它,这对我来说真的没有意义。这意味着,当我们更改其中某个变量的值时,结构大小会有所不同。而且在内存中不可能真的在同一个地方,万一扩展的时候发生碰撞怎么办。而且我们必须在某处写我们要跳过的位,不确定它是否会提供任何优化。

另外,他在乞讨时问我Java中的struct和class有什么区别。我已经回答过,Java 中没有结构,他说“不适合程序员,但数字类型是结构”我有点像 WTF。

基本上问题是:

这家伙是否知道一些很难知道的事情(我的意思是,我在网上寻找它,找不到东西)

或者也许他对自己的工作一无所知,并试图在工作面试中看起来很酷。

0 投票
1 回答
63 浏览

c - 有界数值积分

请注意,我不是要代码,而是要洞察力,可能来自已经遇到类似问题的人。

我正在维护在嵌入式系统中实时运行的代码。出于安全原因,必须执行新的检查。

该检查基于某个变量的积分值。积分必须跨越最后的“T_s”秒,即在每个新循环中,我必须删除变量在 T_s 秒前的值并添加当前值。

天真的方法是将最后的 T_s*frequency 浮点值存储在一个数组中。

以 62.5Hz 运行,这会迅速浪费大量宝贵且有限的内存。

有没有已知的方法,以明显的准确性为代价,显着减少这种检查的内存占用?

该值是来自真实系统的测量值,它不是由函数生成的。

我考虑过存储 N 个平均值,每个 M 个点,然后对 N 个平均值进行积分,这会将内存需求减少到 N+M 个数字,可以显着小于 T_s*frequency,但我想知道:

  • 如果已经对此进行了研究并找到了“最佳”点(例如,作为 M 的函数)。我搜索了,但显然我的 google-fu 坏了,因为搜索包括“数值积分”在内的任何内容都不会导致我寻找的内容。

  • 如果有更好的方法

我用 C 标记了这篇文章,因为这是该项目的官方语言,不幸的是,任何不适用于 ANSI-C 的解决方案对我来说都不可行。

0 投票
1 回答
5706 浏览

c# - C# 优化内存使用:如何释放 DataTable 声明的内存

目前我正在优化一个巨大的批处理程序的内存使用。不同的数据表使用最多的内存。例如,我的 DataTabledataTable使用了大约 260MB。

就像线程接受的答案中的建议一样“在 .NET DataTable 中存储数据的内存开销是多少? ”我正在尝试将相关数据移出 DataTable。这是我的代码:

我正在使用 Clear、Dispose 并将其设置为 null,因为在以下线程中建议使用它:Datatable.Dispose() 将使其从内存中删除?

查看停止点注释以查看该点的内存使用情况。我也试过了,using (DataTable dataTable = ...)但结果是一样的。

我究竟做错了什么?也许有更好的方法来缩小 DataTable 中的数据?

0 投票
1 回答
536 浏览

cuda - 优化 CUDA 的特定内存使用情况

我有一个数据处理任务,可以通过以下方式对其进行样式化。我有data(~1-10GB)和一个函数,它summary基于这个data和一些(双)输入生成(~1MB) x。我需要summary为 1000 个值获取这个x,这对于 GPU 来说似乎是一项完美的任务。重复一遍,所有线程的输入data都是相同的,并且以线性方式读取,但每个线程必须产生自己的summary. 函数针对不同的x.

但是,在 CPU 上的所有值之间进行单线程粗暴循环x只会产生比 K520 差 3 倍的性能。我确实知道这是内存密集型任务(线程必须访问和写入他的随机部分summary),但我仍然很难理解 GPU 如何失去它最初的 1000 倍优势。我已经尝试使用内存(因为它在所有线程中都是相同的输入)data以块的形式提供给提要,但没有明显的改进。__constant__nvprof 报告的典型块运行时间为 10-30 秒。

我将不胜感激对适合此任务的优化的任何见解。

编辑:下面是复制问题的示例代码。它可以在 g++(报告运行时间 5s)和 nvcc(报告运行时间 7s)下编译。分析结果如下

==23844== 分析结果:
Time(%) Time Calls Avg Min Max Name
98.86% 4.68899s 1 4.68899s 4.68899s 4.68899s Kernel(Observation*, int*, Info**)
1.09% 51.480ms 4 12.870ms 1.9200us 50.426ms [CUDA memcpy HtoD]
0.06% 2.6634ms 800 3.3290us 3.2950us 5.1200us [CUDA memcpy DtoD]
0.00% 4.3200us 1 4.3200us 4.3200us 4.3200us [CUDA memcpy DtoH]

编辑 2:我尝试通过并行化艰难的分散内存访问来修改代码。简而言之,我的新内核看起来像这样

这需要 18 秒<<<dim(20, 40, 1), 1000>>>和 172 秒<<<dim(20,40,10), 1000>>>--- 这比单 CPU 线程更糟糕,并且并行任务的数量线性增加。

0 投票
1 回答
241 浏览

c - char字符串和wchar_t字符串之间的函数逻辑重用没有显式字符串复制?

我正在用 C 语言编写一个数据结构来存储命令;以下是我不满意的来源:

这工作得很好,但我对我如何处理我的树支持的事实相当不满意wchar_t。当我意识到填充CommandTree会使任何小于 7 字节的数据类型花费同样多的内存时,我决定添加这个,但为了不重复代码,我CommandTree_putn重用了 wchar_t-supporting 中的逻辑CommandTree_putnw

但是,由于charand的大小不同wchar_t,我不能只传递数组;我必须使用转换并将mbstowcs临时传递wchar_t *CommandTree_putnw. 这是次优的,因为它将CommandTree_putn看到最多的使用,并且这将存储字符串的内存使用 ( sizeof (char)to sizeof (char) + sizeof (wchar_t)) 增加五倍,如果其中很多将使用较长的命令进行实例化,这可能会堆叠。

我想知道我可以做一些事情,比如创建一个包含逻辑的第三个函数,并传递 a size_t,这取决于它将传递给它的字符串转换为 a 的值,或者void *但假设 C 是静态类型的,我必须将逻辑转换为各自的类型,这会破坏我想要的“单个逻辑实例”的想法。const char *const wchar_t *s

所以最终,问题是,我是否可以只提供一次程序逻辑const char *const wchar_t *分别传递包装器,而不在函数中创建一个临时wchar_t *来处理const char *

0 投票
1 回答
213 浏览

python - Pandas 可扩展数据结构——最小化内存消耗

对你们中的许多人来说,这似乎是一个重复的问题,但我找不到令人满意的答案。

我有一个 TimeSeries 数据对象,我每 200 毫秒将数据附加到最坏情况。现在,这是非常非常重的内存,因为我知道它必须再次重新创建底层数据结构,而且它似乎没有清理旧对象。我尝试了类似的东西

这根本没有任何区别!

问题是我的进程在只有 1GB 内存的主机上工作,这种处理很快就会耗尽主机内存。

我需要将至少最后 30 小时的数据保存在内存中,因为每 200 毫秒/每个刻度执行一次分析。

任何优化内存的建议 - 并且仍然保留 pandas.TimeSeries 功能(基于时间间隔切片)。

0 投票
0 回答
200 浏览

regex - 有效地将一组正则表达式应用于多个 url

我有一个场景,我有一组 url(数百万)并且需要运行一组正则表达式(> 60k 正则表达式)以确定 url 是否与正则表达式匹配,然后用替换模式替换它们。

模式可能是这样的:

Regex.Replace(url, "^http([s]?):/(/www.|/)en.wikipedia.org(.*)", "http$1://en.m.wikipedia.org$3" );

我对内存和运行时间有限制。目前,我只实现了上面的伪代码,但是即使使用 6k 正则表达式(20Mb),内存消耗也太高了。我想知道是否已经有一个库可以处理这种问题,或者是否有人建议我应该构建什么样的数据结构来优化内存和运行时。

还有一些例子,左边是匹配模式,右边是替换模式。

^http([s]?):/(/www.|/)youtube.com/watch\?(. ) http$1://m.youtube.com/watch?$3 ^http([s]?): /(/www.|/)facebook.com/(pages/.|[^/ ] $) http$1://m.facebook.com/$3 ^http([s]?):/(/www.| /)twitter.com/(. ) http$1://mobile.twitter.com/$3 ^http([s]?):/(/www.|/)yellowpages.com/(. ) http$1:// m.yellowpages.com/$3 ^http([s]?):/(/www.|/)imdb.com/(title|name)/(. ) http$1://m.imdb.com/$3/ $4 ^http([s]?):/(/www.|/)facebook.com/pages/(. ) http$1://m.facebook.com/pages/$3 ^http([s]?): //detail.chiebukuro.yahoo.co.jp/qa/question_detail/q(\d+)$ http$1://m.chiebukuro.yahoo.co.jp/detail/q$2 ^http([s]?): //www.ebay.com.au/itm/([^/])/(\d+)$ http$1://m.ebay.com.au/itm/$2/$3 ^http([s]?) ://www.youtube.com/user/([^/?&]*)$ http$1://m.youtube.com/user/$2

0 投票
0 回答
119 浏览

java - 如何减少 DDMS 中显示的 Android 开发中的“空闲”部分内存大小?

最近我开始研究如何在android开发中优化内存使用。

当我在 Eclipse 中使用 DDMS 中的“Update Heap”命令分析默认的 Hello World 应用程序时,我感到很震惊,该应用程序是通过单击“新建”→“Android 应用程序项目”并单击“下一步”按钮而不更改任何配置创建的,直到我们最后点击“完成”,我看到堆大小超过了 13MB,而表中“Cause GC”按钮旁边的“free”-part-size 是 9MB!

同样在“显示:统计”下方显示的表格中,还有另一个“免费”部分大小接近 2MB。

该应用程序很简单,我不明白它如何消耗超过 10MB 的内存,以及是什么让“免费”部分大小如此之大。

我们如何才能减少开发中的“免费”零件尺寸?

期待您的回答。谢谢。

0 投票
0 回答
268 浏览

r - 减小 R 中仅包含几种元素的大型矩阵的大小

我有一个矩阵如下sdistR

即使只有少数几种元素,这个矩阵的大小也很大。

有什么办法可以减小这些矩阵的大小。我不能使用稀疏矩阵,因为 0 的数量较少。