问题标签 [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 投票
11 回答
35250 浏览

php - 什么更快:许多 if 或 else if?

我正在遍历一个数组并按值将其排序为一周中的几天。

为了做到这一点,我使用了许多if语句。if如果我使用许多s,而不是一组else if语句,它对处理速度有什么影响吗?

0 投票
4 回答
257 浏览

c - C 编程和 error_code 变量效率

我读过的大多数代码都使用int标准错误处理(从函数等返回值)。但是我想知道使用uint_8will a compiler 是否有任何好处——阅读:大多数架构上的大多数 C 编译器——使用立即地址模式生成指令——即将 1 字节整数嵌入到指令中? 我正在考虑的关键指令是函数返回后的比较,使用 uint_8 作为其返回类型。

我可能会错误地思考事情,因为引入 1 字节类型只会导致对齐问题——编译器喜欢将东西打包成 4 字节可能是完全理智的原因,这可能是每个人都只使用整数的原因——并且因为这是与堆栈相关的问题,而不是堆,所以没有真正的开销。

做正确的事是我的想法。但是,为了争论,可以说这是一种流行的廉价微处理器,用于智能手表,它配置有 1k 的内存,但在其指令集中确实有不同的寻址模式:D

另一个稍微专门化讨论的问题(x86)是:文字是:

同类型?或者编译器会在第二种情况下生成一个 8 字节的文字。如果是这样,它可以使用它来生成一个比较指令,该指令将文字作为立即值,并将返回的 int 作为寄存器引用。请参阅 CMP 指令类型。.

x86 指令集的另一个参考。

0 投票
2 回答
137 浏览

c - 保留执行管道

经常检查返回类型是否有错误。但是,可以以不同的方式指定将继续执行的代码。

或者

重量级 CPU 可以使用简单的统计数据来推测接近/局部的分支的一种方法——我研究了一种用于分支推测的 4 位机制 (-2,-1,0,+1,+2),其中 0 是未知的,而 2将被视为一个真正的分支。

考虑到上面的简单技术,我的问题是关于如何构造代码。我假设主要编译器和主要架构之间必须有一个约定。这是我的两个问题

  1. 当代码不是一个经常访问的循环时,当管道被填充时哪个布尔值有偏差?
  2. 关于分支的推测必须从真或假或零开始(管道必须充满一些东西)。可能是哪个?
0 投票
7 回答
22042 浏览

c - 是否可以告诉分支预测器跟随分支的可能性有多大?

为了清楚起见,我不打算在这里进行任何形式的可移植性,因此任何将我绑定到某个盒子的解决方案都可以。

基本上,我有一个 if 语句,它将 99% 的时间评估为真,并且我试图在最后一个时钟的性能上勉强,我可以发出某种编译器命令(使用 GCC 4.1.2 和 x86 ISA,如果重要)告诉分支预测器它应该为那个分支缓存?

0 投票
3 回答
1791 浏览

php - MySQL SELECTS 的开销 - 最好按顺序使用一个或多个

有一个SELECT foo, bar, FROM users返回 500 行的查询与同时SELECT foo, bar, FROM users WHERE id = x出现 500 个查询之间是否存在明显的性能差异?

在我正在编写的 PHP 应用程序中,我试图在编写清晰易读的代码段之间进行选择,该代码段将生成大约 500 个 SELECT 语句;或者以一种晦涩、复杂的方式编写它,只使用一个返回 500 行的 SELECT。

我更喜欢使用清晰、可维护的代码的方式,但我担心每个 SELECT 的连接开销会导致性能问题。

背景信息,如果它是相关的:1)这是一个 Drupal 模块,用 PHP 编码 2)有问题的表很少得到 INSERT 和 UPDATE,并且很少被锁定 3)由于与问题

谢谢!

0 投票
3 回答
354 浏览

perl - 我应该在 Perl 中逐行读取文件时积极释放内存吗?

我应该在逐行读取文件时积极释放内存吗?一个例子:

“取消定义” $line 变量是减少内存消耗的好选择吗?

0 投票
6 回答
524 浏览

php - PHP:获取数组最后一项的最快和最简单的方法是什么?

获取数组最后一项的最快和最简单的方法是索引数组、关联数组还是多维数组?

0 投票
3 回答
980 浏览

c - 异或运算的 4 字节字对齐

在字边界上进行按位运算有什么优势吗?这样做有任何 CPU 或内存优化吗?

实际问题:我正在尝试创建两个结构的 XOR。假设结构 1 和结构 2 的大小都为 10000 字节。我保留前几百个字节,然后开始 XOR 1 和 2。假设我从 302 开始。这将一次占用 4 个字节并进行 XOR。两个结构的 302、303、304 和 305 将被异或。此循环将重复直到 10000。

现在,如果我从 304 开始,是否有预期的性能改进?

0 投票
10 回答
15487 浏览

objective-c - IF、CASE 和 WHILE 语句有什么区别

我只想知道objective-c中的所有条件语句有什么区别,哪个更快更轻。

0 投票
4 回答
5858 浏览

python - Python if else 微优化

在思考代码的优化时,我想知道在 python 中哪个更昂贵:

或者

有什么想法吗?我喜欢第二个中减少的行数,但想知道重新分配是否比条件切换更昂贵。