问题标签 [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.

0 投票
8 回答
275 浏览

java - java需要的时间

我想知道单独执行条件循环需要多少时间。就像如果我可以选择使用“if else”、“while”、“for”或“foreach”循环,那么哪个循环会执行得更快。我知道差异会非常小,大多数人会说它不会很重要,但是如果我有一个可以访问数千个数据的程序,那么这一点就会显现出来。

我想知道我是否在java的开头声明了一个变量,如果我在使用它之前声明它会有所不同。所需的总时间会减少吗?如果是,那么实际使用的是哪个(在开始时声明变量或刚刚声明它们的地方 b4 它们被使用)?

0 投票
4 回答
11458 浏览

c# - Switch 语句中的大小写顺序是否会影响性能?

假设我有一个如下的 switch 语句

现在假设我知道拥有Alphabete 的频率最高,然后分别是 a、c 和 f。所以,我只是重组了case语句顺序,并将它们制成如下:

第二个switch语句会比第一个switch语句快吗?如果是,并且如果在我的程序中我需要switch多次调用此语句,那会是一个实质性的改进吗?或者如果没有,我如何使用我的频率知识来提高性能?

0 投票
4 回答
14533 浏览

performance - 在原始 8086 上将寄存器设置为 1 或 (-1) 的最有效方法

我现在正在学习组装课程,检查我们家庭作业的人是一个非常迂腐的老派优化怪胎。例如,如果他看到以下内容,他会扣除 1​​0%:

代替:

即使它只用过一次。

我不是汇编编程的完整初学者,但我不是优化专家,所以我需要你的帮助(可能是一个非常愚蠢的问题,但我还是会问):如果我需要将寄存器值设置为 1或(-1)更好地使用:

或执行以下操作:

我真的需要一个好成绩,所以我试图让它尽可能优化。(我需要优化时间和代码大小)

0 投票
6 回答
24930 浏览

c++ - 如何在 C++ 中进行内联汇编(Visual Studio 2010)

我正在编写一个性能关键、数字运算的 C++ 项目,其中 200 行核心模块使用了 70% 的时间。

我想使用内联汇编优化核心,但我对此完全陌生。但是,我确实知道一些 x86 汇编语言,包括 GCC 和 NASM 使用的那种。

据我所知:

我必须将汇编指令放在_asm{}我想要的位置。

问题:

  • 我不知道从哪里开始。在我的内联汇编开始起作用的那一刻,哪个寄存器是什么?
0 投票
8 回答
305 浏览

c++ - 访问类成员时的性能

我正在写一些对性能至关重要的东西,想知道如果我使用它是否会有所作为:

或者

  • 这基本上会导致类似的代码吗?访问类成员是否有额外的开销?

我确信这对于 C++ 专家来说是清楚的,所以我现在不会尝试为它编写一个不切实际的基准测试

0 投票
10 回答
19714 浏览

c - 为什么 n++ 的执行速度比 n=n+1 快?

在 C 语言中,为什么n++执行速度比n=n+1?

我们的老师在今天的课上问了这个问题。(这不是作业)

0 投票
6 回答
8833 浏览

c++ - C++快速将2个数组加在一起

给定数组:

在所有值的范围从 0 到 100的情况下,C++ 中添加这两个数组的最快方法是什么,以便画布中的每个单元格等于自身加上插件中的相应单元格值?

IE,我想实现类似:

所以如果 canvas[0][0] =3 并且 addon[0][0] = 2 那么 canvas[0][0] = 5

速度在这里至关重要,因为我正在编写一个非常简单的程序来暴力破解背包类型的问题,并且会有数千万种组合。

作为一个额外的小问题(如果你能提供帮助,谢谢!)检查画布中的任何值是否超过 100 的最快方法是什么? 循环很慢!

0 投票
3 回答
289 浏览

php - 优化 php 中的大导入

我有一个简单的导入器,它遍历一个相当大的 csv 的每一行并将其导入数据库。

我的问题是:我应该调用另一种方法来插入每个对象(生成 DO 并告诉它的映射器插入)还是应该在导入方法中硬编码插入过程,复制代码?

我知道优雅的做法是调用第二种方法,但我一直在脑海中听到函数调用很昂贵。

你怎么看?

0 投票
8 回答
2491 浏览

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循环标头​​的答案。

0 投票
16 回答
10659 浏览

c++ - 与不使用 if 的测试相比,if 语句的效率如何?(C++)

我需要一个程序来获取两个数字中的较小者,我想知道是否使用标准“如果 x 小于 y”

或多或少比这更有效:

(或将其放在int delta = a - b顶部并替换实例的变体a - b)。

我只是想知道其中哪一个会更有效(或者差异是否太小以至于不相关),以及 if-else 语句与一般替代方案的效率。