`
icyiwh
  • 浏览: 7671 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

动态代理的性能研究

    博客分类:
  • AOP
DAO 
阅读更多
  一直以来, 觉得Java的动态代理机制因为使用了反射, 所以其性能会大受影响, 所以在实际项目中用的不多, 但现在手头上有一个项目, 必须用到拦截器, 而且实现相对简单, 所有就用了动态代理. 闲来无事, 便想测试一下动态代理的性能.
  说明: 说是测试,其实不是很严格, 所以测试数据也不是特别严谨的有统计意义的科学的结果.
  测试环境: Mac OS10.5.5(MB404), eclipse3.4, jkd1.5, hibernate3.2
                其实测试环境是一样的,所以测试数据应该是有可比性的
  测试代码(好像这个说法很业余)如下:
		try {
			PersistentContextInitializer	.init();////在初始化的时候,通过配置文件来控制是否需要代理
			DBTransaction tx = PersistentContext.getDBTransactionFactory()
					.getCurrentDBTransaction();
			tx.begin();
			IDAO dao = PersistentContext.getDAOFactory().createDefaultDAO();////如果需要代理,则获取的是dao代理
			int times = (int)Math.pow(10, 4);
			System.out.println("一共运行" + times + "次");
			long begintime = System.currentTimeMillis();
			for (int i = 0; i < times; i++) {
				dao.find("from GgSwjg where yxBz = 'N'").size();
			}
			long endtime = System.currentTimeMillis();
			System.out.print(((double)(endtime - begintime))/1000.0);
			tx.commit();
		} catch (DAOException e) {
			tx.rollback();
			e.printStackTrace();
		} finally {

		}

  GgSwjg表中一共有1107条数据,其中dao.find(...)可以查询出10条记录
所使用的时间如下(单位:秒)
不使用代理:
  47.785, 47.881, 47.407, 47.681
使用代理:
  48.544, 48.362, 47.881, 49.077

  从以上统计结果,我怎么也没看出来用代理与不用代理的区别在哪儿??? 也许真的没有
分享到:
评论

相关推荐

    动态代理设计模式 日志和源码

    动态代理设计模式是一种在运行时创建代理对象的技术,它允许我们为现有的对象提供额外的功能,如日志记录、性能监控、事务管理等,而无需...通过研究提供的源码,你可以深化对动态代理和AOP的理解,提升你的编程技能。

    jdk动态代理 cglib3.0动态代理

    在Java编程中,动态代理是...对于学习和理解这两种动态代理机制,可以参考提供的博客链接,以及深入研究源码,这将有助于提升对Java动态代理的掌握。同时,熟悉这些工具能帮助开发者更好地设计和实现高效、灵活的代码。

    基于移动代理的动态路由研究

    ### 基于移动代理的动态路由研究 #### 动态路由概述 动态路由是一种网络技术,它允许数据包在传输过程中自动选择最佳路径。与静态路由不同,动态路由能够根据网络状态的变化(如链路故障、拥塞情况等)调整路由...

    基于动态代理Android插件化研究与实现.pdf

    综上所述,本文深入研究了Android插件化技术,特别是动态代理在其中的应用,为Android开发者提供了一种优化插件化解决方案,旨在提升应用的性能和用户满意度。动态代理的灵活运用,使得在不改变原有系统结构的前提下...

    JAVA动态代理模式.pdf

    实际开发中,应深入研究每一步的实现细节,理解动态代理类的加载和生成过程,以及如何通过自定义InvocationHandler来控制方法调用的流程。同时,应该考虑如何正确处理方法调用中可能出现的异常情况,保证程序的健壮...

    jdk动态代理课程代码.rar

    4. **应用场景**:动态代理常用于AOP(面向切面编程),例如日志、性能监控、事务管理等。此外,它也是框架如Spring AOP和JDBC连接池(如C3P0)中的重要组成部分。 在压缩包中的“jdk动态代理”文件夹中,可能包含...

    JDK的动态代理

    在Java开发中,JDK的动态代理是一种强大的工具,它允许我们在运行时创建代理类,这些代理类可以作为原对象的“代理”,在调用原对象的方法前后执行额外的逻辑,比如日志记录、性能监控、事务管理等。动态代理机制是...

    JDK内置动态代理例子

    在Java开发中,JDK内置的动态代理机制...了解以上知识点后,你可以根据给定的`src`目录下的源代码自行研究和学习动态代理的具体实现。这将有助于加深对JDK动态代理机制的理解,并可能激发你在实际项目中应用它的灵感。

    基于动态代理的Java远程调用框架的研究1

    本文探讨的是一种基于动态代理的Java远程调用框架,旨在解决传统远程调用技术如RMI(Remote Method Invocation)所面临的挑战。 RMI是Java平台上的基础远程调用技术,自JDK 1.1开始引入。它允许对象方法在不同的JVM...

    动态代理cglibjar包和源码

    动态代理在Java编程中是一种非常重要的技术,它允许我们在不修改原有对象代码的情况下,为对象增加额外的功能。CGLIB(Code Generation ...通过深入研究CGLIB的源码,可以更好地理解Java字节码和动态代理的底层机制。

    Android-Android中动态代理的使用

    5. **AOP(面向切面编程)**:动态代理可以作为实现AOP的一种方式,通过拦截关键方法的调用来实现横切关注点,如日志记录、性能监控等。 在`DynamicProxy-master`这个项目中,可能包含了实现上述功能的示例代码,...

    JDK、CGLib动态代理

    在Java开发中,JDK和CGLib是两种常见的实现动态代理的技术,它们允许我们在运行时创建对象的代理,以增强或拦截对象的方法...对于深入学习,可以参考提供的博文链接以及进一步研究CGLib和JDK动态代理的相关文档和源码。

    基于Linux的代理服务器的研究和实现.pdf

    【基于Linux的代理服务器的研究和实现】 在信息技术领域,Linux操作系统因其开源、稳定和高性能的特点,在服务器端的应用中占据了重要地位。"基于Linux的代理服务器的研究和实现"的主题旨在探讨如何利用Linux系统...

    动态代理源代码 可以练习用

    动态代理是Java编程中一种非常重要的设计模式,它允许我们创建在运行时动态实现的代理对象,以便在不修改原始类的基础上扩展或增强其功能。动态代理主要应用于AOP(面向切面编程)和RPC(远程过程调用)等领域,为...

    论文研究-分布式入侵检测系统中自适应主机代理的研究 .pdf

    本研究主要集中在如何通过引入自适应主机代理,提升分布式入侵检测系统的性能和效率。 在介绍自适应主机代理的研究之前,首先需要了解移动代理技术。移动代理是一种能够在不同主机之间自主迁移的软件代理,它具有跨...

    本科毕业设计--基于linux-nginx-反向代理服务器的应用研究.doc

    反向代理服务器可以提高系统性能,解决后期的动态扩展问题,提供一个既可以提高系统性能又可以解决后期的动态扩展的方案。 知识点9:Nginx的特点 Nginx是一款功能强大且高性能的Web服务器软件,支持反向代理功能,...

Global site tag (gtag.js) - Google Analytics