问题:在Java里面使用instanceof的性能影响

我正在写一个应用程序,其中一种设计方案包含了instanceof操作的大量使用。虽然我知道面向对象设计通常试图避免使用instanceof,但那是另一回事了,这个问题纯粹只是讨论与性能有关。我想知道这是否会对性能产生任何影响?它和 ==一样快速吗?

例如,我有一个有10个子类的父类。在接受父类作为参数的单个函数中,我检查这个类是否是子类的实例,并执行一些程序。

我想到的解决它的另一种方法是使用一个“type id”原始整型代替,并使用掩码表示子类的类别,然后只让子类“type id”和一个常量掩码做一次掩码的比较,比较的结果就用来表示类别。

instanceof是否被JVM优化到比这更快?我想坚持使用Java,但是这个应用程序的性能是至关重要。如果以前有过类似经历的人能提供一些建议,那就太棒啦。我是不是太挑剔了,或者说把注意力放在优化错误的东西上面了?

回答

现代的JVM/JIT编译器已经消除了大多数传统的“慢”操作(包括实例化、异常处理、反射等。)产生的性能影响。

正如Donald Knuth所写,“我们应该忘记小的效率问题,可以说大约97%的情况下:过早的优化是万恶之源。”instanceof的性能可能还没有成为一个问题,所以不要浪费时间去想一些复杂的解决方案,除非你确定这已经出现问题了。

文章翻译自Stack Overflow:https://stackoverflow.com/questions/103564/the-performance-impact-of-using-instanceof-in-java

在Java里面使用instanceof的性能影响相关推荐

  1. 在Java中使用instanceof的性能影响

    本文翻译自:The performance impact of using instanceof in Java I am working on an application and one desi ...

  2. java instanceof性能差_在J中使用instanceof的性能影响

    在J中使用instanceof的性能影响 我正在开发一个应用程序,一种设计方法涉及到instanceof运算符的极大使用. 虽然我知道OO设计通常会试图避免使用instanceof,但这是一个不同的故 ...

  3. java overdata_使用try-catch over条件来安全地设置值,并在java中以最小的性能影响...

    在这里,我的主要目标是安全地设置值,而不会产生性能(速度,内存,CPU等)影响. 我有一个愚蠢的选择(坏的风格)也在下面提到. 那么,最好的方法是什么? 选项1? 选项2? 还是另一个? 选项1 : ...

  4. 英特尔发现Spectre和Meltdown 补丁对性能影响程度为0-21%

    \ 看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料! \ \\ 微软.红帽(Red Hat)和英特尔一起发布了Meltdown和Spectre补丁对各种系统 ...

  5. java split()方法_Java编程性能优化一些事儿

    点击上方 "程序员小乐"关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Smile and stop complaining about the t ...

  6. JAVA的字符串拼接与性能

    概述:本文主要研究的是JAVA的字符串拼接的性能,原文中的测试代码在功能上并不等价,导致concat的测试意义不大.不过原作者在评论栏给了新的concat结果,如果有兴趣的同学建议自己修改代码测试. ...

  7. 【读书笔记】实战JAVA虚拟机JVM故障诊断与性能优化 读书笔记

    文章目录 1.概述 1.1 **第一章:初探java虚拟机** 1.2 认识java虚拟机的基本结构 1.3 常用Java虚拟机参数 1.4 垃圾回收器 1.5 垃圾收集器以及内存分配 1.6 性能监 ...

  8. 老李分享:《Java Performance》笔记1——性能分析基础

    老李分享:<Java Performance>笔记1--性能分析基础 1.性能分析两种方法: (1).自顶向下: 应用开发人员通过着眼于软件栈顶层的应用,从上往下寻找性能优化的机会. (2 ...

  9. 一起谈.NET技术,.Net Discovery系列之-深入理解平台机制与性能影响 (中)

    上一篇文章中Aicken为大家介绍了.Net平台的垃圾回收机制与其对性能的影响,这一篇中将继续为大家介绍.Net平台的另一批黑马-JIT.有关JIT的机制分析 ● 机制分析以C#为例,在C#代码运行前 ...

最新文章

  1. window.open详解
  2. Win10的64位操作系统,Visual Studio 2019配置OpenCV4.1.0
  3. bouml 逆向分析c++_JS逆向之漫画柜
  4. dbscan论文_论文分享 :Linkage Based Face Clustering via GCN
  5. LeetCode 837. 新21点(动态规划)
  6. 简单选择排序算法 (JAVA)
  7. 将Windows8或WindowsServer2012装在VHD上
  8. 智慧警务三维PGIS及一标三实采集、展示平台
  9. java根据经纬度计算距离
  10. 银行如何构建反欺诈模型
  11. 地图制图基础(四):制图意识
  12. python编的俄罗斯方块游戏_Python编写俄罗斯方块小游戏
  13. 神器推荐:应用之星,零代码就能制作炫酷的H5页面
  14. kinova_j2s6s300【Cartesian position control Finger position control】
  15. [硬件]导热垫(Thermal Pad)和导热过孔(Via for thermal pad)
  16. 总结吴恩达 ChatGPT Prompt 免费课程
  17. syslog与syslog服务器的配置
  18. 网页版式设计与平面构图
  19. DDR4之地址空间、颗粒容量、page size计算
  20. Luca Canali

热门文章

  1. Java进阶之光!mysql安装包安装教程
  2. web前端【第十一篇】jQuery属性相关操作
  3. Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
  4. eclipse常用的快捷键
  5. void和void*
  6. 应用程序的主入口点应用程序的主入口点应用程序的主入口点
  7. RUNOOB python练习题12 找素数问题
  8. 混合模型和EM---混合高斯
  9. 学习linux系统到底有没捷径?
  10. 记一次打包的诡异现象