问题标签 [processing-efficiency]
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.
c# - 遍历 Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItem' 链接属性很慢
我的目的是获取 WorkItems 的父子链接类型的链接关系。
处理 165 s需要90sWorkItem
,而微软的 Team Explorer 仅使用3s来显示相同的结果。
java - Prime 速度测试仪
我在 Java 中完成了一项家庭作业,以创建查找素数等的类(您会在代码中看到更好的内容)。
我的代码:
我的代码的目标是更快(和正确)。我很难做到这一点。建议?
**新代码:
我确实试图让它变得更好一点。你觉得呢,它可以进一步改进吗?(速度测试还是很高的……)
performance - 我如何用更快的机器计算最大的情况?
问题是 :
对于一个需要 n^2 个“指令”来处理大小为 n 的输入案例的程序和一台在一个小时的计算时间内可以处理的最大输入案例为 100 的机器,最大案例有多大?如果换成一台快4倍的机器,一小时内处理完?
我该怎么做呢?
string - 用于查找具有所有查询词的最小子字符串的有效数据结构
我的朋友在一次采访中遇到了这个问题。我们得到一个包含一些句子的文件。句子只有 0-9, az, AZ 和句号(.) ,我们需要读取文件并以查询更快的方式存储。这个阶段所花费的时间不是问题。这里查询将包含一些单词,我们需要返回包含所有这些单词的最小子字符串。顺序并不重要。(注意:假设整个文件可以放在主存中)
例如,如果文件是:“Ram 正在攻读计算机科学学位。Ram 家里有电脑。Ram 现在在家。”
查询 1:"Ram computer a" 输出:"Ram has a computer" 查询 2:"Ram home" 响应:"home.Ram"
我想将文件存储为一个链接列表,其中每个节点都由一个单词组成。如果是最后一个单词,则单词+句号存储在节点中。在查询时,我们需要遍历 LL 并找到包含所有单词的最小字符串。
我们如何进一步优化它?我们可以以更好的方式存储文件吗?
javascript - 哪种方法最适合在数组中搜索对象?
我已经排序了以下在数组中搜索对象的方法。这个问题已经被问过无数次了,但我想从以下方式中知道哪个最好。如果有另一个我也想知道。
使用$.grep()
上面的函数返回数组的长度。
- 0 当元素不存在时
- 1 当元素存在时
- 如果存在更多具有相同值的元素,则长度 > 1
使用查找对象
这样我就不需要每次都遍历整个数组。我只是检查一下lookup[id]
。
传统方式的for循环
要检查元素是否存在,我会调用in_array(arr,element)
.
哪种方法最好?问题听起来很重复,但我只想确定这三个中哪个最好。
更新
数组将包含以下对象——
performance - 如何最大化原生 R 脚本的性能(将运行数千次)?
我正在尝试对相同的模拟数据集上的几个统计测试进行强力的头对头比较。我将生成数千个“控制”和数千个“实验”种群,并在每组上运行相同的测试。调用测试的包装器将被调用数千次。
我的问题是:
- 下面的计划是一个好的计划吗?
- 你能想出任何方法来提高速度吗(不重写本机 R 函数,尽管我可以复制它们的内部代码的子集并只运行它而不是整个函数)?
计划
我已经有了模拟种群,并将使用适当的应用函数将控制和相应的实验观察传递给包装器。
除了控制和实验观察之外,包装器将没有任何参数(我们称它们为xx
and yy
)。其他所有内容都将在包装器中进行硬编码,以尽可能避免流控制逻辑的开销和在环境之间复制数据。
每个要调用的函数都将在单独的行上,以一致的格式,按依赖顺序排列(例如,在某种意义上,cox.zph
依赖于已经存在的coxph
对象,因此coxph()
将在 之前调用cox.zph()
)。函数将被包装try()
,如果一个函数失败,输出和依赖于它的函数首先测试它返回的对象是否try-error
作为它的第一个类,如果有,某种占位符值。
被调用函数块后面将跟随一个长c()
语句,其中从单独的行中的各个拟合对象中提取的每个项目。同样,如果源对象是try-error
或占位符,则NA
在该输出槽中放置一个。
这样,如果某些函数失败,整个运行不会中止,并且每个模拟的输出是相同长度的数字向量,适合捕获到矩阵。
根据给定模拟集的目标,我可以根据需要注释掉或插入额外的测试和结果。
一些更具体的后续问题
- 如果我已经在使用
compilePKGS(T)
andenableJIT(3)
(来自内置库),通过手动运行或在我的包装函数及其调用的解释函数上compiler
是否有任何进一步的收获?compile()
cmpfun()
- 是否有人对选择最佳价值有任何指导
enableJIT()
,或者如果我不关心启动时间,“越多越好”吗? - 如果每个模拟都是一个新的随机变量,我从记忆中没有任何收获,对吧?
- 对于长时间运行的任务,我喜欢让内部函数检查是否存在给定名称的文件,如果存在,则将其源到其环境中。这使我可以即时重新控制会话以修复问题、运行
browser()
、保存内部对象等,而无需中止整个运行。但是,我想 ping 通常会开始累加的文件系统。对于将布尔值(即调试脚本或不提供调试脚本)传递给正在运行的 R 进程(在 Linux 下)的最有效方式,是否存在共识?
谢谢。
parallel-processing - 最小化嵌套循环中对 std::max 的调用次数
我试图在我的内部循环中减少对 std::max 的调用次数,因为我调用它数百万次(毫不夸张!),这使得我的并行代码比顺序代码运行得慢。基本思想(是的,这是一个分配)是代码计算某个网格点的温度,一次又一次地迭代,直到最大变化不超过某个非常小的数字(例如 0.01)。新温度是其上方、下方和旁边的单元格中温度的平均值。结果,每个单元格都有不同的值,我想返回给定网格块的任何单元格中的最大变化。
我已经让代码工作了,但是速度很慢,因为我在内循环中对 std::max 进行了大量(过多)调用,而且它是 O(n*n)。我使用了一维域分解
注意: tdiff 不依赖于任何东西,只依赖于矩阵中的内容
归约函数的输入是 lambda 函数的结果
diff 是该网格块中单个单元格在 1 次迭代中的最大变化
阻塞范围在代码前面定义
t_new 是该网格点的新温度,t_old 是旧温度
如何让我的代码更有效率?我想减少对 std::max 的调用,但需要保持正确的值。使用 gprof 我得到:
ETA:执行我的代码所花费的时间中有 61.66% 是在 std::max 调用上,它调用了超过 300 万次。lambda函数的每个输出都会调用reduce函数,因此减少lambda函数中对std::max的调用次数也会减少对reduce函数的调用次数
performance - Power 操作的时间效率?
我只是想知道电源操作及其时间效率。由于幂运算是有效的:
这是否意味着计算 x^n 大约需要 O(n) 时间(假设乘法是 O(1),我不确定是不是这样)?或者现代编程语言/硬件架构是否有优化,可以将其减少到 O(1) 或类似的东西?如果存在优化,请解释(或发布解释链接)。
sql - Rails / SQL ...更好地访问数据库并将数据存储在数组中?
我的应用程序的核心是使用存储在几个数据库表中的输入数组和参数进行多条件比较。
我正在努力使这个过程最有效......我认为这可能会导致一些关于使用内存与访问数据库的良好对话。
这是一个例子:
- 我有一个
Merchant
,MerchantUserRelation
和User
表。 - 我需要存储在临时数组中的大部分数据来自
MerchantUserRelation
,但在某一时刻,我需要检查它是否是用户的生日(user.birthdate.today?
)。
对我来说,似乎有两种选择:
- 创建一个仅包含数据的临时数组,
UserMerchantRelation
然后为该user.birthdate.today?
方法单独访问数据库(2次命中数据库),--或-- UserMerchantRelation
使用AND中的数据创建一个稍大的临时数组User
(因此只访问数据库一次)
对于这个例子,我认识到差异非常小(阅读:可以忽略不计),但如果数组大小和所需的数据库访问次数要大得多怎么办?
感谢您提供任何参考和/或见解!
language-agnostic - 高效、随机访问累积和的算法或设计模式
我正在修补地理空间数据,特别是 Tracks(由纬度和经度定义的地理位置的有序序列)。
大多数应用程序要求我计算从起点到给定点的累积距离。因此,例如,如果我调用track.totalDistance[20]
,我会得到从 start 到索引为 20 的点的距离。
目前我正在通过预先计算每个连续距离、增加一个变量并将值分配给每个点来解决这个问题,这不是一个好的行为,因为我打算编辑轨道(添加、删除和更新点)和“总距离”实际上不是跟踪点的内在属性,而是跟踪点在其包含轨道的上下文中的固有属性。
另一方面,如果我推迟对 getter 函数的评估,比如 ,getTotalDistance(track, 20)
将会有很多重复且实际上是不必要的计算。
所以问题是:如何实现一个类,以便在任何时候更有效地获得任意索引的累积总和,同时避免不必要的计算(完全初始化或重复)?
我使用的语言主要是 Python、Javascript 和 C#,但我想答案可能是可以用任何语言实现的通用结构。