首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Asm.js中,按位操作如何提高性能?

问在Asm.js中,按位操作如何提高性能?
EN

Stack Overflow用户
提问于 2014-05-02 20:08:59
回答 2查看 501关注 0票数 1

在Asm.js定义的第几行中,有一个基于ASM.js的代码示例,它解释了按位操作有助于获得更快的JS代码:

代码语言:javascript
复制
HEAP32[p >> 2]|0

或

代码语言:javascript
复制
(x+y)|0

我的问题是,这个操作如何提高性能,在Asm.js或Emscripten生成的JS代码中多次使用这个位运算符的原因是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-02 20:13:19

按位运算符强制其操作数为整数值。这是一种比调用Math.floor更快的转换方式。

代码语言:javascript
复制
p >> 2

(对于p的非负值)与Math.floor(p / 4)相同。

票数 2
EN

Stack Overflow用户

发布于 2014-05-02 20:13:38

使用右位移位(>>)除以1与除以2相同,但它比实际计算基数10要快,因为计算机只需在内存中移动二进制数字,而不必进行计算。就像在基数10中,当你想把一个数字乘以10,你知道你只需要在数字的右边加一个零(相反,除法,从右边取零)。因此,通过向右移动两位数字,你等于除以2倍(例如24/2 = 12和12/2 =6或24/4 = 6)。

显然,(x+y)|0只是做floor的a faster way。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23436159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档