java instanceof 原理_java-在现代JVM实现中如何实现instanceof?
AFAIK每个类都知道它扩展的所有类以及实现的接口.这些可以存储在提供O(1)查找时间的哈希集中.
当代码经常采用同一分支时,由于几乎可以消除成本,因为CPU可以在确定是否应该采用该分支之前在分支中执行代码,从而使成本几乎为零.
由于微基准测试是在4年前进行的,我希望最新的CPU和JVM会更快.
public static void main(String... args) {
Object[] doubles = new Object[100000];
Arrays.fill(doubles, 0.0);
doubles[100] = null;
doubles[1000] = null;
for (int i = 0; i < 6; i++) {
testSameClass(doubles);
testSuperClass(doubles);
testInterface(doubles);
}
}
private static int testSameClass(Object[] doubles) {
long start = System.nanoTime();
int count = 0;
for (Object d : doubles) {
if (d instanceof Double)
count++;
}
long time = System.nanoTime() - start;
System.out.printf("instanceof Double took an average of %.1f ns%n", 1.0 * time / doubles.length);
return count;
}
private static int testSuperClass(Object[] doubles) {
long start = System.nanoTime();
int count = 0;
for (Object d : doubles) {
if (d instanceof Number)
count++;
}
long time = System.nanoTime() - start;
System.out.printf("instanceof Number took an average of %.1f ns%n", 1.0 * time / doubles.length);
return count;
}
private static int testInterface(Object[] doubles) {
long start = System.nanoTime();
int count = 0;
for (Object d : doubles) {
if (d instanceof Serializable)
count++;
}
long time = System.nanoTime() - start;
System.out.printf("instanceof Serializable took an average of %.1f ns%n", 1.0 * time / doubles.length);
return count;
}
最终打印
instanceof Double took an average of 1.3 ns
instanceof Number took an average of 1.3 ns
instanceof Serializable took an average of 1.3 ns
如果我改变“双打”
for(int i=0;i
doubles[i] = "";
我懂了
instanceof Double took an average of 1.3 ns
instanceof Number took an average of 1.6 ns
instanceof Serializable took an average of 2.2 ns
注意:如果我改变
if (d instanceof Double)
至
if (d != null && d.getClass() == Double.class)
表现是一样的.
java instanceof 原理_java-在现代JVM实现中如何实现instanceof?相关推荐
- java开发流程图_Java 详解 JVM 工作原理和流程
作为一名Java使用者,掌握JVM的体系结构也是必须的. 说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言.Java类文件格式.Java ...
- 《Java虚拟机原理图解》5. JVM类加载器机制与类加载过程
参考网址:http://blog.csdn.net/luanlouis/article/details/50529868 0.前言 读完本文,你将了解到: 一.为什么说Jabalpur语言是跨平台的 ...
- java锁原理_Java锁原理学习
Java锁原理学习 为了学习Java锁的原理,参照ReentrantLock实现了自己的可重入锁,代码如下: 先上AQS的相关方法: // AQS = AbstractQueuedSynchroniz ...
- java synchronized 原理_Java Synchronized的原理
我们先通过反编译下面的代码来看看Synchronized是如何实现对代码块进行同步的: public classSynchronizedDemo{public voidmethod(){synchro ...
- java 静态绑定原理_Java方法的静态绑定与动态绑定讲解
一:绑定 把一个方法与其所在的类/对象 关联起来叫做方法的绑定.绑定分为静态绑定(前期绑定)和动态绑定(后期绑定). 二:静态绑定 静态绑定(前期绑定)是指:在程序运行前就已经知道方法是属于那个类的, ...
- java cas原理_Java并发之原子变量及CAS算法-上篇
Java并发之原子变量及CAS算法-上篇 编辑 概述 本文主要讲在Java并发编程的时候,如果保证变量的原子性,在JDK提供的类中是怎么保证变量原子性的呢?.对应Java中的包是:java.uti ...
- java序列化原理_Java序列化机制和原理
Java序列化算法透析 Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是一种将这些字节重建成一个对象的过程.Java序列化API提供一 ...
- java写值日表_Java知识之JVM
类加载器 类装载器ClassLaoder负责加载class文件,class文件开头有特定的文件标识,将class文件字节码内容加载到内存中,并将这些内容转换成方法区中的运行时数据结构,并且ClassL ...
- java treeset原理_Java集合 --- TreeSet底层实现和原理(源码解析)
概述 文章的内容基于JDK1.7进行分析,之所以选用这个版本,是因为1.8的有些类做了改动,增加了阅读的难度,虽然是1.7,但是对于1.8做了重大改动的内容,文章也会进行说明. TreeSet实现了S ...
最新文章
- 17日南土所蒋瑀霁报告:红壤团聚体尺度养分转化的生物学过程(线虫-微生物互作机制)...
- 用友服务器整体迁移--数据库附加
- 第23天学习Java的笔记-抽象类
- 【忘川风华录】雅社——公会社交系统交互设计思考
- 认识控制台-控制台句柄、附着到控制台、关闭控制台
- “5G 时代,手机或被淘汰”
- ASP.NET MVC5总结(二)@HTML扩展
- Ubuntu安装最新版nodejs
- Java基础入门(八)之面向对象二
- 优启通制作系统u盘_优启通 v3.6.2020.0620 VIP版/免费版-好用的U盘启动盘制作工具...
- matlab 平滑曲线连接_Matlab的5个控制类工具箱介绍
- 计算机中丢失msvcr100.dll怎么办,msvcr100.dll
- android允许应用在后台弹出界面,Android部分手机“后台弹出界面权限”解决方案...
- C语言将图片转化成Base64码
- javaScript系列 [06]-javaScript和this
- android subscriber 自定义,android – 使用自定义ErrorHandler时,Retrofit不会触发onError
- 深圳IT外包公司名单汇总
- 橙仕汽车——双排mini卡
- 智能手机全球普及率今年有望达到63%
- 分子动力学模拟之SETTLE约束算法
热门文章
- android 找不到符号 符号 RequiresApi
- 前端要懂mysql_【灵魂拷问】你真的懂得Mysql的管理和使用吗?
- calendar当前时间整点_时间处理相关类
- aps是什么意思_全画幅大还是中画幅大? 为什么说底大一级压死人
- android手机变微软手机号码,手机居然变平板?微软沦落到抄袭5年前安卓设计
- python stm32f401_NUCLEO-F401RE(STM32F401RE)开发板跑Micropython平台
- Linux下yum安装nginx教程
- vi vim常用命令
- -heap 查看当前jvm堆栈信息_必知必会的JVM工具系列二,读懂会用jhat,jstack,jstatd,JConsole...
- 宿松长铺程集高中2021年高考成绩查询,2017宿松程集中学录取分数线(附2017高考成绩喜报)...