`
jspengxue
  • 浏览: 179812 次
  • 性别: Icon_minigender_1
  • 来自: 天堂和地狱的中间
社区版块
存档分类
最新评论

java反射机制性能测试摘要

阅读更多
  反射性能是Sun开发1.4 JVM时关注的一个方面,它在反射方法调用结果中显示。在这类操作的性能方面,Sun 1.4.1 JVM显示了比1.3.1版本很大的改进,在我的测试中运行速度大约是1.3.1版本的开部。在这类简单的测试中,IBM 1.4.0 JVM再次获得了更好的成绩,但是只比Sun 1.4.1 JVM快两到三倍。

我还为创建使用反射的对象编写了类似的计时测试程序,但这种情况下的差异不象字段和方法调用情况下那么显著。使用 newInstance() 调用创建一个简单的 java.lang.Object 实例耗用的时间大约是在Sun 1.3.1 JVM上使用 new Object() 的12倍,是在IBM 1.4.0 JVM的四倍,只是Sun 1.4.1 JVM上的两倍。使用 Array.newInstance(type, size) 创建一个数组耗用的时间是任何测试的JVM上使用 new type[size] 的两倍,随着数组大小的增加,差异逐步缩小。


结束语

Java语言反射提供一种动态链接程序组件的多功能方法。它允许程序创建和控制任何类的对象(根据安全性限制),无需提前硬编码目标类。这些特性使得反射特别适用于创建以非常普通的方式与对象协作的库。例如,反射经常在持续存储对象为数据库、XML或其它外部格式的框架中使用。

反射有两个缺点。第一个是性能问题。当用于字段和方法接入时反射要远慢于直接代码。性能问题的程度取决于程序中是如何使用反射的。如果它作为程序运行中相对很少涉及的部分,缓慢的性能将不会是一个问题。即使测试中最坏情况下的计时图显示的反射操作只耗用几微秒。仅反射在性能关键的应用的核心逻辑中使用时性能问题才变得至关重要。

许多应用更严重的一个缺点是使用反射会模糊程序内部实际要发生的事情。程序人员希望在源代码中看到程序的逻辑,反射等绕过了源代码的技术会带来维护问题。反射代码比相应的直接代码更复杂,正如性能比较的代码实例中看到的一样。解决这些问题的最佳方案是保守地使用反射-- 仅在它可以真正增加灵活性的地方 -- 记录其在目标类中的使用。
分享到:
评论

相关推荐

    JAVA技术摘要(内容荟萃的解决方案)

    8. **反射与注解**:反射机制允许在运行时检查类、接口、字段和方法的信息,而注解则提供了一种在代码中添加元数据的方式,两者在插件开发、框架设计等领域有广泛应用。 9. **Java EE**:Java企业版(Java EE)提供...

    java 教程 摘要文档

    7. **反射机制**:允许程序在运行时检查类的信息,并动态创建和访问类的对象。 8. **泛型**:增强了代码的类型安全,减少编程错误,提高代码重用。 9. **Java API**:熟悉并熟练使用Java标准库中的各种类和方法,...

    嵌入式JavaPOS系统测试的设计与实现--千锋培训

    在J2SE环境中,JUnit的使用相对简单,但在J2ME环境下则会遇到一定的挑战,尤其是由于缺少反射机制。为了克服这一限制,开发者需要自行实现特定于J2ME环境的功能,例如浮点数运算方法。在本文档中,介绍了一个名为`...

    java自学之道

    以上只是Java自学之道的一部分,通过阅读"Java自学之道大纲.doc"、"Java自学之道摘要.doc"、"Java自学之道前言.doc"、"Java自学之道内容.doc",你可以得到更深入、系统的学习计划和指导,逐步提升你的Java编程能力。...

    JAVA面试题总汇:j2ee面试知识.pdf

    - **Java内存管理:** 包括Java堆栈的区别、垃圾回收机制、内存泄漏的预防等,了解这些知识对于写出高性能的Java程序至关重要。 - **Java集合框架:** List、Set、Map等集合类的原理和使用场景,以及它们的子类如...

    阿里巴巴java开发手册2020

    - 谨慎使用反射,它可能导致性能下降。 - 对于频繁访问的数据结构,考虑使用缓存或本地缓存技术,如Guava Cache。 11. **安全性** - 遵循最小权限原则,为每个账号分配最小必要的权限。 - 使用HTTPS进行加密...

    java编程语言的知识结构_副本_76941.pdf

    反射机制允许程序在运行时动态获取类的信息和对象的属性、方法。 3. **面向对象**:Java是面向对象的语言,包括类和对象的创建与销毁,equals()和hashCode()方法用于对象比较,以及枚举类型(enum)和接口的使用。...

    softtheme.rar_Java编程_Java_

    8. **反射**:Java反射机制允许在运行时检查类的信息,如类名、方法、字段等,并能动态调用方法和访问属性,极大地增强了程序的灵活性。 9. **泛型**:泛型是Java SE 5.0引入的新特性,它允许在定义类、接口和方法...

    基于Android的自适应移动云计算应用框架.pdf

    该框架采用了模块化设计,利用Java反射机制简化移动云应用的开发难度。Java反射允许在运行时检查和修改程序的行为,从而降低了开发复杂性。通过成本效益模型的分析,框架能够适应不同类型的任务,智能选择计算迁移或...

    一个基于JSON的对象序列化算法

    例如,对于Java中的对象,可以通过反射机制获取对象的属性名称和对应的值,并根据这些信息构建出符合JSON规范的字符串表示。 #### 对象导航机制 为了实现Java对象到JSON表达式的透明转换,本文还建立了一个对象导航...

    QTJambi API

    - **利用Java特性**: 结合Java的多线程、反射等特性,提高QtJambi应用的性能和灵活性。 - **遵循Qt设计原则**: 遵循Qt的设计哲学,如使用模型/视图架构来处理数据和界面。 - **测试和调试**: 利用JUnit等工具进行...

    NYT

    6. **反射**:Java反射机制允许程序在运行时检查类的信息并动态调用方法,是实现元编程的关键。 7. **注解(Annotations)**:用于向编译器和JVM提供元数据,常见于Spring框架中的配置和AOP切面编程。 8. **JVM内存...

    SSH开发架构分析和实现

    - **控制器实现**:采用不同技术实现控制器模块,如EJB、Java反射等。 ##### 1.3 MVC模式详解 MVC模式是一种基础设计模式,用于将用户界面逻辑与业务逻辑分离,主要分为三个部分: - **Model(模型)**:负责处理...

Global site tag (gtag.js) - Google Analytics