小符号中效率的思考

 昨天看了下JDK源码里面二分法查找的实现,对于一个地方甚是奇怪!

 一般来说,想得到某个INT型变量除以2,假设是VAR,我只能想到的是VAR/2

 然而我确看到的是VAR>>>1.象这样的写法,记得好像汇编,或者C++里面应该有不少这么的小技巧!

 于是我对比了一下它们之间引起性能的差异,当数据在一万条左右,都是微乎其微的,但是当达到百万条时,差距就显现出来了!

 这个让我思考,为什么会有差距呢?

 难道除以2的底层实现不是>>>形式吗?

 我可以推断,如果底层的除以2一定包括>>>这么一个步骤的,也就是说除以2这个方式是>>>的超集!

 所以由此我得到了个简单的结论,除以2一定比>>>复杂许多.

 那么这个地方用哪种方式比较好呢?显然是最后那种,如果性能是第一位的话.但是如果程序是第一位的话,还是选择通用的吧!

精确的需求加上简单的处理可以提高性能!

通用的需求加上抽象的处理,可以提高程序的可读性,可维护性!

如何选择?适合才是最好的原则!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值