运算符性能优化

目录

尽量避免使用乘*、除/、模%、浮点数运算,效率比较低

1,移位与浮动数运算性能比较

2,对于 % 的优化(模数、被模数 倍数小于的情况下): 可以转化成减法

3,对于 % 的优化: 可以通过统一公式~例如

4,对于 % 的优化: 可以通过&,【前提:将数组的长度设计为 2 的幂(2n)】,例如:


尽量避免使用乘*、除/、模%、浮点数运算,效率比较低

1,移位与浮动数运算性能比较

1)新容量为旧容量的1.5倍

2)注意一个bug: >>运算符不加()报错! 涉及到运算符优先级问题

2,对于 % 的优化(模数、被模数 倍数小于的情况下): 可以转化成减法

 ✿ n % m 等价于 n – (m > n ? 0 : m) 的前提条件:n < 2m

private int index(int index) {
   index += front; 
    //return index % elements.length;
   //优化为:return index - (index >= elements.length ? elements.length : 0);
 }

3,对于 % 的优化: 可以通过统一公式~例如

 统一成公式(奇数的情况)n0 = (n + 1)/ 2; 然后考虑如何符合偶数的情况

【可以看到偶数和奇数就差个 1/2 ,咱需要把相对于偶数,奇数多出来的1/2 消除掉,想到 向下取整floor,可以消除小数, 同时 floor 的加入,并不影响原先奇数的结果】

【这里只需要将 / 优化成右移】

4,对于 % 的优化: 可以通过&,【前提:将数组的长度设计为 2 的幂(2n)】,例如:

✿ 哈希函数:作用---将哈希表的key转化成对应表中的索引,从而存放key对应的value。

■ 哈希函数具体细节过程:

① 首先生成 key 的哈希值(必须是整数);

② 再让 key 的哈希值跟数组的大小进行相关运算,生成一个索引值;

✿ 这里使用 & 【前提:将数组的长度设计为 2 的幂(2n),则最大的索引就是2-1)的原因,例子:

例如:(一个数 & 2-1)【111...】它会等于自己本身,

同时这个数还是不超过数组的最大范围 2n,实现哈希值,控制在 0 - 2-1)的区间

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伟庭大师兄

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值