看懂程序的性能
对客户端程序而言 拙劣的性能会严重影响用户体验 界面停顿 抖动 响应迟钝等问题会遭到用户不停的抱怨 一个典型的例子就是Eclipse IDE工具在Full GC时会出现程序假死现象 相信一定被不少开发人员所诟病 对于服务器程序来说 性能问题则更为重要 相信不少后台服务器软件都有各自的性能目标 以Web服务器为例 服务器的响应时间 吞吐量就是两个重要的性能参数 当服务器承受巨大的访问压力时 可能出现响应时间变长 吞吐量下降 甚至是抛出内存溢出异常而崩溃 这些问题 都是性能调优需要解决的
一般来说 程序的性能通过以下几个方面来表现
执行速度 程序的反映是否迅速 响应时间是否足够短
内存分配 内存分配是否合理 是否过多地消耗内存或者存在泄漏
启动时间 程序从运行到可以正常处理业务需要花费多长时间
负载承受能力 当系统压力上升时 系统的执行速度 响应时间的上升曲线是否平缓
返回目录 Java程序性能优化 让你的Java程序更快 更稳定
编辑推荐
Visual C++音频/视频技术开发与实战
Oracle索引技术
lishixinzhi/Article/program/Java/gj/201311/27850
1、介绍在开发中,性能测试是设计初期容易忽略的问题,开发人员会为了解决一个问题而“不择手段”,所参与的项目中也遇到了类似问题,字符串拼接、大量的调用和数据库访问等等都对系统的性能产生了影响,可是大家不会关心这些问题,“CPU速度在变快”,“内存在变大”,并且,“好像也没有那么慢吧”。
有很多商业的性能测试软件可供使用,如Jprofiler、JProbeProfiler等,但在开发当中显得有些遥远而又昂贵。
2、目标本文将讲述如何利用语言本身提供的方法在开发中进行性能测试,找到系统瓶颈,进而改进设计并且在尽量不修改测试对象的情况下进行测试。
3、预备知识面向对象编程通过抽象继承采用模块化的来求解问题域,但是模块化不能很好的解决所有问题。
有时,这些问题可能在多个模块中都出现,像日志功能,为了记录每个方法进入和离开时的信息,你不得不在每个方法里添加log("insomemethod")等信息。
如何解决这类问题呢?将这些解决问题的功能点散落在多个模块中会使冗余增大,并且当很多个功能点出现在一个模块中时,代码变的很难维护。
因此,AOP(AspectOrientedProgramming)应运而生。
如果说OO(AobjectOrientedProgramming)关注的是一个类的垂直结构,那么AOP是从水平角度来看待问题。
动态代理类可以在运行时实现若干接口,每一个动态代理类都有一个Invocationhandler对象与之对应,这个对象实现了InvocationHandler接口,通过动态代理的接口对动态代理对象的方法调用会转而调用Invocationhandler对象的invoke方法,通过动态代理实例、方法对象和参数对象可以执行调用并返回结果。
说到AOP,大家首先会想到的是日志记录、权限和事务,是的,AOP是解决这些问题的好办法。
性能测试主要包括以下几个方面:计算性能:可能是人们首先关心的,北大青鸟http://www.kmbdqn.cn/认为简单的说就是执行一段代码所用的时间内存消耗:程序运行所占用的内存大小启动时间:从你启动程序到程序正常运行的时间可伸缩性(scalability)用户察觉性能(perceivedperformance):不是程序实际运行有多快,而是用户感觉程序运行有多快.
1.返回一个类型的数组跟返回该类型的泛型一般来说是泛型的性能要高,因为泛型可以避免类型的装箱与拆箱。但具体的还要看你的怎么使用你的类型的。
2、DataSet, DataTable , DataReader三者比较
DataReader最快,但其提供的功能也是最少的。建议不要太多使用DataSet,因为这东西太大了,最好使用Table.
3.采用分层架构以后跟未分层的项目哪一个性能好些.
将一个项目划分过多的层次对性能而言没有任何好处。但有时候项目的分层是必要的,因为一个项目在设计与制作的时候你不可能仅仅考虑它的性能,你还得考虑它的安全性、扩展性等。为了达到这些软件目标,你就得分层设计。
4string a = ""与 string b = string.Empty
string b = string.Empty的性能要高一些。string尽管被当作基元的值类型使用,但其实它是引用类型的,直接赋值为“”会导致一次内存分配。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)