问题标签 [overhead-minimization]

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 投票
2 回答
98 浏览

c# - 使用 \n 而不是使用另一个打印功能有多重要

在 C# 中,我们有 Console.WriteLine,在编写线性程序时,优化和开销很重要,我想知道,在同一个 Console.WriteLine 中使用“\n”而不是再次调用它有多么必要如果我想再次打印,可以说 10 行:

如您所见,此语句可能很长,这不是一个好的编程习惯。

0 投票
3 回答
192 浏览

python - 梳理Python中不同类的几种大数据结构;如何在减少内存使用的同时合并和存储我需要的数据?

这是怎么回事

我每隔几分钟就通过包在 Python 2.7.8 中从几千个网络设备收集数据netsnmp。我也在使用fastsnmpy,以便我可以访问(更有效的) Net-SNMP 命令snmpbulkwalk

我正在尝试减少我的脚本使用的内存量。我正在运行同一脚本的三个实例,该脚本会在重新查询所有设备以获取我们想要的数据之前休眠两分钟。当我在其中创建原始脚本时,bash它们在同时处于活动状态时会使用不到 500MB。然而,当我将其转换为 Python 时,每个实例占用 4GB 这表明(对我而言)我的数据结构需要更有效地管理。即使在空闲时,它们总共消耗 4GB。


代码活动

我的脚本首先创建一个列表,我在其中打开一个文件并将目标设备的主机名附加为单独的值。这些通常包含 80 到 1200 个名称。

从那里我设置 SNMP 会话并执行请求

由于这两个 SNMP 包的行为方式,设备响应被解析为列表并存储到一个巨大的数据结构中。例如,

我必须遍历每个响应,组合相关数据,然后输出每个设备的完整响应。这有点困难例如,

每个设备都有不同数量的响应。我不能循环期望每个设备都具有统一的任意数量的值来组合成一个字符串以写入 CSV。


我如何处理数据

我相信在这里我消耗了大量内存,但我无法解决如何简化流程同时删除访问过的数据。

目前我正在创建一个新字典,检查设备响应是否为空,然后将响应值附加到将用于写出 CSV 文件的字符串。

问题在于我实际上是在克隆现有的字典,这意味着我使用了两倍的系统内存。我想删除我在expandresults移动它们时访问过的值,这样我就expandarrays不会使用太多的 RAM。有没有一种有效的方法来做到这一点?还有更好的方法来降低我的代码的复杂性,以便更容易理解吗?


罪魁祸首

感谢那些回答的人。对于那些将来由于遇到类似问题而偶然发现此线程的人:fastsnmpy软件包是大量使用系统内存的罪魁祸首。该multiwalk()函数为每个主机创建一个线程,但一次完成,而不是设置某种上限。由于我的脚本的每个实例将处理多达 1200 个设备,这意味着 1200 个线程在短短几秒钟内被实例化并排队。使用该bulkwalk()功能较慢,但仍然足够快以满足我的需求。两者之间的差异是 4GB 和 250MB(系统内存使用)。

0 投票
1 回答
1009 浏览

python - 如何减少python中多处理的时间

我正在尝试在 python 中构建多处理以降低计算速度,但似乎在多处理之后,整体计算速度显着下降。我创建了 4 个不同的进程并将数据帧拆分为 4 个不同的数据帧,这将是每个进程的输入。在对每个流程进行计时之后,似乎间接费用成本很高,并且想知道是否有办法降低这些间接费用。

我正在使用 windows7,python 3.5,我的机器有 8 个内核。

0 投票
1 回答
216 浏览

javascript - 在Javascript中将“新”构造函数“绑定”到函数

我正在创建一个库,其函数可能每秒被调用数千次。此函数需要new构造函数,以便将一组新数据绑定到固定原型,如下所示:

所以,我目前被构造函数internalFunc调用的方式new是使用第二个函数,类似于人们可以称之为“构造函数代理”的函数。

然而,回到主要问题,这funcThatGetsUsed可以每秒被调用数千次。因此,它可能会减小库的大小,并且如果我能够消除中间人“构造函数代理”函数,并且只需将新构造函数绑定internalFunc到像这样的bind功能:

那么,有没有办法bindToConstructor在javascript中使用''来减少函数调用开销?

请注意,我不能只告诉库的用户使用 new 运算符的原因是因为这会破坏这个特定库的目的。案例和要点:JQuery 使用“构造函数代理”功能。只需输入类似console.log($.toString())的内容,您应该会看到如下内容:

请注意,我的目标是 Edge 及更高版本,因此该解决方案不必在 Internet Explorer 中工作。我所说的“以 Edge 为目标”的意思是,如果它在 Edge 中工作,那么它当然可以在所有其他浏览器中工作。

0 投票
0 回答
710 浏览

multithreading - 英特尔 Pin 多线程检测:如何仅检测线程之间的共享变量访问?

我正在使用 Intel Pin 动态检测多线程程序以进行一些数据竞争检测。我检测内存读/写指令以在运行时收集内存跟踪,然后分析日志。跟踪收集很简单,它在运行时将内存跟踪(包括时间、线程 id、地址等)存储到缓冲区并在最后将其写入。

我的麻烦是严重的运行时开销(200x - 500x)。根据其他作品,跟踪收集应该只引入不到 100 倍的开销。我试图通过跳过对堆栈的访问来优化它,但这并没有太大帮助。由于我的仪器是在指令粒度上进行的,因此会记录大量访问。因此,我认为减少运行时开销的唯一方法是减少要收集的访问,也就是只记录对线程之间共享变量(与竞争相关的变量)的访问。

我可以通过某种方式找出对 Pin 中共享变量的访问吗?还是有其他方法可以减少运行时开销?

0 投票
2 回答
188 浏览

javascript - 如何从普通的 JavaScript 页面重定向到 Angular 6(微型站点到 Angular 6)?

我只希望我的登陆屏幕用普通的 JavaScript 构建,以减少负载并在点击登陆屏幕中的任何按钮时重定向到我的 angular 6 应用程序。

如何重定向index.html到另一个 (Angular) index.html