在Java中使用instanceof的性能影响

问题:

我正在处理一个应用程序,一个设计方法涉及极大地使用instanceof操作符。虽然我知道OO设计通常试图避免使用instanceof,但这是一个不同的故事,这个问题纯粹与性能有关。我想知道是否有任何性能影响?是和==一样快
例如,我有一个有10个子类的基类。在接受基类的单个函数中,我会检查该类是否是子类的实例,并执行一些例程。
想到解决这个问题的其他方法之一就是使用“类型id”整数原语,并使用位掩码来表示子类的类别,然后对子类“type id”进行一个掩码比较代表类别的常量掩码。
JVM是否以某种方式优化instanceof比这更快?我想坚持Java,但应用程序的性能至关重要。如果曾经在这条路上的人可以提供一些建议,那将会很酷。我是否太愚蠢或专注于错误的事情进行优化?

回答:

现代JVM / JIC编译器已经消除了大多数传统“慢”操作的性能影响,包括实例,异常处理,反射等。
唐纳德·克努特(Donald Knuth)写道:“我们应该忘记小的效率,大概97%的时间内,过早的优化是所有邪恶的根源。 instanceof的性能可能不会是一个问题,所以不要浪费你的时间提出异常的解决方法,直到你确定这是问题。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: The performance impact of using instanceof in Java

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

53 + = 54