小符号中效率的思考

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

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

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

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

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

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

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

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

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

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

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

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

你可能感兴趣的:(jdk,C++,c,C#)