原创文章,转载请指明出处:http://aub.iteye.com/blog/2124974, 尊重他人即尊重自己
1.避免垃圾回收对结果造成的误差
方案一:JVM启动时使用-verbose:gc观察垃圾回收动作,确认整个测试期间垃圾回收根本不会执行
方案二:运行足够的次数和时间,这样测试程序能够充分的反应出运行期间分配与垃圾回收的开销(推荐)。
2.避免动态编译对结果造成的误差
方案一:让测试程序长时间运行,让编译过程和解释执行仅仅占总体运行时间的一小部分。
方案二:让测试代码“热身”,充分的执行,这样开始计时前,代码已经被编译了(JVM启动时使用-xx:PrintCompilation观察是否有编译动作)。
下面是一个多线程性能测试的例子:
package self.study; import java.util.concurrent.CountDownLatch; public class TestHarness { public static void main(String[] args) throws InterruptedException { TestHarness testHarness = new TestHarness(); long timeTasks = testHarness.timeTasks(10, new Runnable() { @Override public void run() { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } }); System.out.println(timeTasks); } public long timeTasks(int nThreads, final Runnable task) throws InterruptedException { //预热,编译 for (int i = 0; i < 10000; i++) { task.run(); } // 真正的测试 final CountDownLatch startGate = new CountDownLatch(1); final CountDownLatch endGate = new CountDownLatch(nThreads); for (int i = 0; i < nThreads; i++) { Thread t = new Thread() { @Override public void run() { try { startGate.await(); try { task.run(); } finally { endGate.countDown(); } } catch (InterruptedException e) { e.printStackTrace(); } } }; t.start(); } long start = System.currentTimeMillis(); startGate.countDown(); endGate.await(); long end = System.currentTimeMillis(); return end - start; } }
相关推荐
前端时间项目中需要对java服务程序进行性能测试,确保服务程序能够满足业务的并发需求,这里把整个过程中遇到的问题以及解决方法做一个总结,下次遇到类似问题的时候可以参考,提高效率。 1. 采用jmeter编写压测脚本...
具体包括:性能优化策略、程序编写及硬件服务器的基础知识、Java API优化建议、算法类程序的优化建议、并行计算优化建议、Java程序性能监控及检测、JVM原理知识、其他相关优化知识等。 通读《大话Java性能优化》后...
在完成项目后,就可以进行系统测试了,可以将以下性能指标,作为性能调优的标准,响应时间、吞吐量、计算机资源分配使用率、负载承受能力。 本教程结合 Java 应用开发的知识点,将内容分为七大模块,从上到下依次...
具体包括:性能优化策略、程序编写及硬件服务器的基础知识、Java API优化建议、算法类程序的优化建议、并行计算优化建议、Java程序性能监控及检测、JVM原理知识、其他 资源太大,传百度网盘了,链接在附件中,有需要...
本文首先介绍了负载测试、基于APM工具的应用程序和服务器监控,随后介绍了编写高性能Java代码的一些最佳实践。最后研究了JVM特定的调优技巧、数据库端的优化和架构方面的调整。
具体 包括: 性能 优化 策略、 程序 编写 及 硬件 服务器 的 基础 知识、 Java API 优化 建议、 算法 类 程序 的 优化 建议、 并行 计算 优化 建议、 Java 程序 性能 监控 及 检测、 JVM 原理 知识、 其他 相关 ...
本测试程序适用于接口类的性能测试,只适用于单交易基准 和 单交易负载测试;支持两种场景: 场景一:模拟LoadRunner/Jmeter的并发策略,根据设定的并发用户,在开始测试时,启动对应并发用户数的线程,每个线程中...
具体包括:性能优化策略、程序编写及硬件服务器的基础知识、Java API优化建议、算法类程序的优化建议、并行计算优化建议、Java程序性能监控及检测、JVM原理知识、其他相关优化知识等。 通读《大话Java性能优化》后,...
java调用本地dll的几种方法性能对比测试。 JNA消耗的总时间(ms):5406 bridj消耗的总时间(ms):984 JNI消耗的总时间(ms):47 包含c++源码和java源码,部署和使用方法。在win7和winxp下测试用过。 部分源码是...
Gumshoe是一个JAVA程序检测工具,它能帮助你跟踪程序的负载和性能。它能通过度量TCP,UDP,CPU使用等信息,帮助你分析出资源的使用情况 ,同时它也提供了Java程序中调用栈的分析功能,比如提供某个方法调用的次数,...
java解析xml文档模型的性能测试程序,里面包括程序源代码,测试分析文档,当然自然也包括了各种文档模型的使用方法。有dom4j,jdom,xerces,xpp,exml,crimson等,大家可以下载学习,并进一步测试。
它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库, FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来在不同压力类别下测试它们的强度和分析...
java的分析工具有:1.VisualVM,java应用程序性能分析和运行监控工具;2.YourKit,java性能分析工具;3.Jetm,java程序执行时间测量工具;4.Arthas,java诊断工具; java的分析工具有以下几种 1.VisualVM ...
Apache Jmeter是一款旨在为负载测试功能行为和测量性能的开源的Java应用程序
然而,在本书之前,介绍如何测试Web应用程序的可扩展性、性能和功能方面的书籍去少之甚少。本书指导您如何在设计、编程和测试中进行最佳选择。书中将介绍一个快速有效的方法,教会您利用Java知识构建具有产品价值、...
JSP , tomcat ,CJKAnalyzer包 操作系统 OS ( winxp 或 win2000 ) 编译程序 javac , eclipse(IDE) 测试支持软件 java , eclipse(IDE) 2.3基本设计概念和处理流程 总体框架如下所示: 2.4人工处理过程 如通过启动...
[17个软件测试文档]-12XX性能测试报告 已上传: [17个软件测试文档]-11性能测试实践 http://download.csdn.net/detail/cleopard/8344037 [17个软件测试文档]-10成功的 Web 应用系统性能测试 ...[17个软件测试文档]-9web...
Java中的跨平台Web应用程序性能测试 该项目是关于使用Java与服务器端文件捆绑在一起开发一个简单的可定制Web应用程序性能测试工具,该工具可轻松部署和负载测试所需功能的服务器性能,或添加原型方法并确定其性能。...