美国上市公司,专注Java培训22年

Java初期学者程序性能测试问题解答


1 介绍

在开发中,性能测试是设计初期容易忽略的问题,开发人员会为了解决一个问题而“不择手段”,作者所参与的项目中也遇到了类似问题,字符串拼接、大量的调用和数据库访问等等都对系统的性能产生了影响,可是大家不会关心这些问题,“CPU速度在变快”,“内存在变大”,并且,“好像也没有那么慢吧”。

有很多商业的性能测试软件可供使用,如Jprofiler、JProbe Profiler等,但在开发当中显得有些遥远而又昂贵。

2 目标

本文将讲述如何利用语言本身提供的方法在开发中进行性能测试,找到系统瓶颈,进而改进设计;并且在尽量不修改测试对象的情况下进行测试。

3 预备知识

面向对象编程通过抽象继承采用模块化的来求解问题域,但是模块化不能很好的解决所有问题。有时,这些问题可能在多个模块中都出现,像日志功能,为了记录每个方法进入和离开时的信息,你不得不在每个方法里添加log("in some method")等信息。如何解决这类问题呢?将这些解决问题的功能点散落在多个模块中会使冗余增大,并且当很多个功能点出现在一个模块中时,代码变的很难维护。因此,AOP(Aspect Oriented Programming)应运而生。如果说OOP(Aobject Oriented Programming)关注的是一个类的垂直结构,那么AOP是从水平角度来看待问题。

动态代理类可以在运行时实现若干接口,每一个动态代理类都有一个Invocation handler对象与之对应,这个对象实现了InvocationHandler接口,通过动态代理的接口对动态代理对象的方法调用会转而调用 Invocation handler对象的invoke方法,通过动态代理实例、方法对象和参数对象可以执行调用并返回结果。

说到AOP,大家首先会想到的是日志记录、权限和事务,是的,AOP是解决这些问题的好办法。本文根据AOP的思想,通过动态代理来解决一类新的问题——性能测试(performance testing)。

性能测试主要包括以下几个方面:

计算性能:可能是人们首先关心的,简单的说就是执行一段代码所用的时间

内存消耗:程序运行所占用的内存大小

启动时间:从你启动程序到程序正常运行的时间

可伸缩性(scalability)

用户察觉性能(perceived performance):不是程序实际运行有多快,而是用户感觉程序运行有多快.

本文主要给出了计算性能测试和内存消耗测试的可行办法。


【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,如涉及作品内容、版权和其它问题,请在30日内与我们联系,我们会予以重改或删除相关文章,以保证您的权益!

Java开发高端课程免费试学

大咖讲师+项目实战全面提升你的职场竞争力

  • 海量实战教程
  • 1V1答疑解惑
  • 行业动态分析
  • 大神学习路径图

相关推荐

更多
  • Java常用日志框架介绍
    Java常用日志框架介绍
    对于一个应用程序来说日志记录是必不可少的一部分。线上问题追踪,基于日志的业务逻辑统计分析等都离不日志。java领域存在多种日志框架,目前常用的日志框架包括Log4j,Log4j 2,Commons Logging,Slf4j,Logback,Jul。 详情>>

    2018-05-29

  • 秒懂 Java8 Optional 的正确使用姿势
    秒懂 Java8 Optional 的正确使用姿势
    我们知道 Java 8 增加了一些很有用的 API, 其中一个就是 Optional. 如果对它不稍假探索, 只是轻描淡写的认为它可以优雅的解决 详情>>

    2016-11-25

  • 学会这12个框架,你的薪资能更上一层楼
    学会这12个框架,你的薪资能更上一层楼
    在当今世界,对各种框架的了解是非常重要的。它们使你可以快速开发原型和实际项目。本文分享了12个与Java开发、移动app开发、Web 开发和大数据相关的有用框架。希望可以帮你提升技术方面的知识。 详情>>

    2018-05-17

  • 重磅!站点性能诊断利器 JMC 宣布开源
    重磅!站点性能诊断利器 JMC 宣布开源
    Rockit JVM 创始人之一、Oracle Java 产品组成员 Marcus Hirt 昨日在其博客上宣布,Java Mission Control(JMC)的源代码已正式开源。 详情>>

    2018-05-16

  • Java开班时间

    收起