问题标签 [micro-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.
java - java需要的时间
我想知道单独执行条件循环需要多少时间。就像如果我可以选择使用“if else”、“while”、“for”或“foreach”循环,那么哪个循环会执行得更快。我知道差异会非常小,大多数人会说它不会很重要,但是如果我有一个可以访问数千个数据的程序,那么这一点就会显现出来。
我想知道我是否在java的开头声明了一个变量,如果我在使用它之前声明它会有所不同。所需的总时间会减少吗?如果是,那么实际使用的是哪个(在开始时声明变量或刚刚声明它们的地方 b4 它们被使用)?
c# - Switch 语句中的大小写顺序是否会影响性能?
假设我有一个如下的 switch 语句
现在假设我知道拥有Alphabet
e 的频率最高,然后分别是 a、c 和 f。所以,我只是重组了case
语句顺序,并将它们制成如下:
第二个switch
语句会比第一个switch
语句快吗?如果是,并且如果在我的程序中我需要switch
多次调用此语句,那会是一个实质性的改进吗?或者如果没有,我如何使用我的频率知识来提高性能?
performance - 在原始 8086 上将寄存器设置为 1 或 (-1) 的最有效方法
我现在正在学习组装课程,检查我们家庭作业的人是一个非常迂腐的老派优化怪胎。例如,如果他看到以下内容,他会扣除 10%:
代替:
即使它只用过一次。
我不是汇编编程的完整初学者,但我不是优化专家,所以我需要你的帮助(可能是一个非常愚蠢的问题,但我还是会问):如果我需要将寄存器值设置为 1或(-1)更好地使用:
或执行以下操作:
我真的需要一个好成绩,所以我试图让它尽可能优化。(我需要优化时间和代码大小)
c++ - 如何在 C++ 中进行内联汇编(Visual Studio 2010)
我正在编写一个性能关键、数字运算的 C++ 项目,其中 200 行核心模块使用了 70% 的时间。
我想使用内联汇编优化核心,但我对此完全陌生。但是,我确实知道一些 x86 汇编语言,包括 GCC 和 NASM 使用的那种。
据我所知:
我必须将汇编指令放在_asm{}
我想要的位置。
问题:
- 我不知道从哪里开始。在我的内联汇编开始起作用的那一刻,哪个寄存器是什么?
c++ - 访问类成员时的性能
我正在写一些对性能至关重要的东西,想知道如果我使用它是否会有所作为:
或者
- 这基本上会导致类似的代码吗?访问类成员是否有额外的开销?
我确信这对于 C++ 专家来说是清楚的,所以我现在不会尝试为它编写一个不切实际的基准测试
c - 为什么 n++ 的执行速度比 n=n+1 快?
在 C 语言中,为什么n++
执行速度比n=n+1
?
我们的老师在今天的课上问了这个问题。(这不是作业)
c++ - C++快速将2个数组加在一起
给定数组:
在所有值的范围从 0 到 100的情况下,C++ 中添加这两个数组的最快方法是什么,以便画布中的每个单元格等于自身加上插件中的相应单元格值?
IE,我想实现类似:
所以如果 canvas[0][0] =3 并且 addon[0][0] = 2 那么 canvas[0][0] = 5
速度在这里至关重要,因为我正在编写一个非常简单的程序来暴力破解背包类型的问题,并且会有数千万种组合。
作为一个额外的小问题(如果你能提供帮助,谢谢!)检查画布中的任何值是否超过 100 的最快方法是什么? 循环很慢!
php - 优化 php 中的大导入
我有一个简单的导入器,它遍历一个相当大的 csv 的每一行并将其导入数据库。
我的问题是:我应该调用另一种方法来插入每个对象(生成 DO 并告诉它的映射器插入)还是应该在导入方法中硬编码插入过程,复制代码?
我知道优雅的做法是调用第二种方法,但我一直在脑海中听到函数调用很昂贵。
你怎么看?
java - Java:微优化数组操作
我正在尝试制作一个简单的前馈神经网络的 Java 端口。
这显然涉及大量的数值计算,所以我试图尽可能地优化我的中心循环。结果应该在float
数据类型的限制范围内是正确的。
我当前的代码如下所示(错误处理和初始化已删除):
我正在使用 -server 选项运行 JVM,到目前为止,我的代码比类似的 C 代码慢 25% 到 50%。我能做些什么来改善这种情况?
谢谢,
马丁·维博
编辑#1:在看到大量回复后,我可能应该澄清我们场景中的数字。在典型的运行过程中,该方法将使用不同的输入调用大约 50.000 次。一个典型的网络会有 numberLayers = 3 层,分别有 190、2 和 1 个神经元。因此,最里面的循环将有大约2*191+3=385
迭代(当计算第 0 层和第 1 层中添加的偏置神经元时)
编辑#1:在这个线程中实现了各种建议之后,我们的实现几乎和 C 版本一样快(在 ~2% 以内)。感谢所有的帮助!所有建议都很有帮助,但由于我只能将一个答案标记为正确答案,因此我会将其提供给 @Durandal 以建议数组优化并作为唯一一个预先计算for
循环标头的答案。
c++ - 与不使用 if 的测试相比,if 语句的效率如何?(C++)
我需要一个程序来获取两个数字中的较小者,我想知道是否使用标准“如果 x 小于 y”
或多或少比这更有效:
(或将其放在int delta = a - b
顶部并替换实例的变体a - b
)。
我只是想知道其中哪一个会更有效(或者差异是否太小以至于不相关),以及 if-else 语句与一般替代方案的效率。