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

准确的java程序性能测试

    博客分类:
  • Java
阅读更多

原创文章,转载请指明出处: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;
	}
}

 

 

1
0
分享到:
评论

相关推荐

    java服务程序性能测试总结

    前端时间项目中需要对java服务程序进行性能测试,确保服务程序能够满足业务的并发需求,这里把整个过程中遇到的问题以及解决方法做一个总结,下次遇到类似问题的时候可以参考,提高效率。 1. 采用jmeter编写压测脚本...

    大话JAVA性能优化.pdf

    具体包括:性能优化策略、程序编写及硬件服务器的基础知识、Java API优化建议、算法类程序的优化建议、并行计算优化建议、Java程序性能监控及检测、JVM原理知识、其他相关优化知识等。 通读《大话Java性能优化》后...

    阿里巴巴Java性能调优实战(2021-2022华山版)+Java架构核心宝典+性能优化手册100技巧.rar

    在完成项目后,就可以进行系统测试了,可以将以下性能指标,作为性能调优的标准,响应时间、吞吐量、计算机资源分配使用率、负载承受能力。 本教程结合 Java 应用开发的知识点,将内容分为七大模块,从上到下依次...

    大话JAVA性能优化PDF

    具体包括:性能优化策略、程序编写及硬件服务器的基础知识、Java API优化建议、算法类程序的优化建议、并行计算优化建议、Java程序性能监控及检测、JVM原理知识、其他 资源太大,传百度网盘了,链接在附件中,有需要...

    如何提升Java应用程序性能

    本文首先介绍了负载测试、基于APM工具的应用程序和服务器监控,随后介绍了编写高性能Java代码的一些最佳实践。最后研究了JVM特定的调优技巧、数据库端的优化和架构方面的调整。

    大话Java性能优化

    具体 包括: 性能 优化 策略、 程序 编写 及 硬件 服务器 的 基础 知识、 Java API 优化 建议、 算法 类 程序 的 优化 建议、 并行 计算 优化 建议、 Java 程序 性能 监控 及 检测、 JVM 原理 知识、 其他 相关 ...

    JAVA接口性能测试源码

    本测试程序适用于接口类的性能测试,只适用于单交易基准 和 单交易负载测试;支持两种场景: 场景一:模拟LoadRunner/Jmeter的并发策略,根据设定的并发用户,在开始测试时,启动对应并发用户数的线程,每个线程中...

    大话JAVA性能优化 周明耀 PDF

    具体包括:性能优化策略、程序编写及硬件服务器的基础知识、Java API优化建议、算法类程序的优化建议、并行计算优化建议、Java程序性能监控及检测、JVM原理知识、其他相关优化知识等。 通读《大话Java性能优化》后,...

    java调用本地dll的几种方法性能对比测试

    java调用本地dll的几种方法性能对比测试。 JNA消耗的总时间(ms):5406 bridj消耗的总时间(ms):984 JNI消耗的总时间(ms):47 包含c++源码和java源码,部署和使用方法。在win7和winxp下测试用过。 部分源码是...

    Gumshoe-跟踪Java程序的负载和性能

    Gumshoe是一个JAVA程序检测工具,它能帮助你跟踪程序的负载和性能。它能通过度量TCP,UDP,CPU使用等信息,帮助你分析出资源的使用情况 ,同时它也提供了Java程序中调用栈的分析功能,比如提供某个方法调用的次数,...

    java解析xml文档的性能测试

    java解析xml文档模型的性能测试程序,里面包括程序源代码,测试分析文档,当然自然也包括了各种文档模型的使用方法。有dom4j,jdom,xerces,xpp,exml,crimson等,大家可以下载学习,并进一步测试。

    jmeter性能测试工具

    它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库, FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来在不同压力类别下测试它们的强度和分析...

    Cubic java应用诊断工具.rar

    java的分析工具有:1.VisualVM,java应用程序性能分析和运行监控工具;2.YourKit,java性能分析工具;3.Jetm,java程序执行时间测量工具;4.Arthas,java诊断工具; java的分析工具有以下几种 1.VisualVM ...

    Ruby-ApacheJmeter是一款旨在为负载测试功能行为和测量性能的开源的Java应用程序

    Apache Jmeter是一款旨在为负载测试功能行为和测量性能的开源的Java应用程序

    Java测试与设计

    然而,在本书之前,介绍如何测试Web应用程序的可扩展性、性能和功能方面的书籍去少之甚少。本书指导您如何在设计、编程和测试中进行最佳选择。书中将介绍一个快速有效的方法,教会您利用Java知识构建具有产品价值、...

    javajava概要设计方案.doc

    JSP , tomcat ,CJKAnalyzer包 操作系统 OS ( winxp 或 win2000 ) 编译程序 javac , eclipse(IDE) 测试支持软件 java , eclipse(IDE) 2.3基本设计概念和处理流程 总体框架如下所示: 2.4人工处理过程 如通过启动...

    [17个软件测试文档]-12XX性能测试报告

    [17个软件测试文档]-12XX性能测试报告 已上传: [17个软件测试文档]-11性能测试实践 http://download.csdn.net/detail/cleopard/8344037 [17个软件测试文档]-10成功的 Web 应用系统性能测试 ...[17个软件测试文档]-9web...

    WAPT:Java中的跨平台Web应用程序性能测试

    Java中的跨平台Web应用程序性能测试 该项目是关于使用Java与服务器端文件捆绑在一起开发一个简单的可定制Web应用程序性能测试工具,该工具可轻松部署和负载测试所需功能的服务器性能,或添加原型方法并确定其性能。...

Global site tag (gtag.js) - Google Analytics