js技巧:位运算符提升代码性能

79 浏览发布于 作者 Yang (欢迎转载-请注明出处链接)留下评论分享按钮

位操作 具有性能优势。如果可以,优先考虑位运算符。常见使用姿势:

1、按位与

对2取模:(应用场景,比如 奇偶数行列的 判断操作)

//一般操作
if( i % 2 ){
  //偶数操作
} else {
  //奇数操作
}

//位运算符操作 改写,速度提升50%(取决于浏览器):
if( i & 1 ){
  //奇数操作
} else {
  //偶数操作
}

//测试:
var c = (18&1); //0
var c = (31&1); //1
var c = (0&1); //0

原理:32位的数字的二进制底层表示,偶数最低位是 0 ,奇数最低位 是1。若与数字 1 进行 按位与 运算判断时,偶数为 0,奇数为 1。则可判断出奇偶数。

2、位掩码 配合 按位或

对许多数字选项值频繁检索检查的情形,会提高整体性能:

//按位或 创建一个 数字选项值
var options = 1 | 2 | 4;
//判断 某个 数字 是否在该选项内
if( options & 4 ){
  console.log("在里面");  //会打印到这句话
}

//只能用于数字,字符串不行的:
var options = "我" | "你" | "他";
if( options & "你" ){  //选项是字符串,无法判断为 true 的
  console.log("在里面");  //不会打印到这句话
}

原理:位掩码用于处理同时存在多个布尔值选项的情形;单个数字的每一位来判定是否选项成立,从而有效的把数字转换为由布尔值标记组成的数组。掩码中的每个选项的值都等于 2 的幂。

想要打赏,请点击这里

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注