当前位置: 首页 > 工具软件 > Intrinsic > 使用案例 >

Java 中的固有函数(intrinsic)

慕容玉堂
2023-12-01

WHY

  为什么需要固有函数?
  Java 是不支持宏的, 从抽象性上来说, Java少了一半的表达能力(按正则序展开),大体上来说,这并不太影响Java作为一门生产级的语言,但是在某些特定的地方,消除方法调用过程是非常必要的,比如Math包中的一些函数,亦或者JUC的Atomic类的compareAndSwap方法。所以Java提供了更加底层的(但并不"均一")的特定 – 固有(intrinsic)函数

WHAT

  什么是固有函数。
  固有函数大概相当于C++ 的宏或者inline函数, 即消去了函数调用过程的函数, 不过有的固有函数优化的更加极致,比如compareAndSwap的固有函数会将底层汇编原语直接内联

HOW

  怎么用?
  一般来说,固有函数并不影响我们使用他们,只不过写的时候注意一下就行了,比如说我之前特别不喜欢Math方法, 宁愿自己手写Math.max,了解了固有方法之后,Math.max显然会比自己手写的效率更高(虽然可能只是一点点)。
  还有就是compareAndSet方法,不应该使用一个局部变量来持有结果, 而应该直接放到if的判断里(如果有可能的话), 不然内联带来的性能提升可能会被浪费(虽然编译器优化可能会直接优化掉局部变量持有结果这一步,不过在优化级别比较低的情况下,应该发生的概率很低)。

 类似资料: