`
songhongchen
  • 浏览: 121406 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

如何测试才能看出效果?迷惑,为什么先执行的方法用的时间要长很多?

阅读更多
以下的代码:
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.RandomAccess;

public class ArrayListTest implements Runnable
{
	private final static int SIZE = 50000;
	RandAccessClass rac = new RandAccessClass();
	NotRandAccessClass nrac = new NotRandAccessClass();

	public void run()
	{
		testTest(rac, true);
		testTest(nrac, false);
	}
	public ArrayListTest()
	{
		for (int i = 0; i < SIZE; i++)
		{
			rac.add(new Date());
		}
		for (int i = 0; i < SIZE; i++)
		{
			nrac.add(new Date());
		}
	}
	public static void main(String... a)
	{
		ArrayListTest alt = new ArrayListTest();
		Thread t = new Thread(alt);
		t.run();
		ArrayListTest alt1 = new ArrayListTest();
		Thread t1 = new Thread(alt1);
		t1.run();
	}
	public static void testTest(List<Date> list, boolean isRandAccessClass)
	{
		long start = System.currentTimeMillis();
		int count = list.size();
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < count; i++)
		{
			sb.append(list.get(i).toString());
		}
		if (isRandAccessClass)
		{
			System.out.println("实现了RandomAccess接口使用了" + (System.currentTimeMillis() - start) + "毫秒");
		}
		else
		{
			System.out.println("没有实现RandomAccess接口使用了" + (System.currentTimeMillis() - start) + "毫秒");
		}
	}
}

class RandAccessClass extends ArrayList<Date> implements List<Date>, RandomAccess
{
	private static final long serialVersionUID = 6194516078884111626L;
}

class NotRandAccessClass extends ArrayList<Date> implements List<Date>
{
	private static final long serialVersionUID = 2804918599235402533L;
}


当RUN方法中的执行顺序是:
testTest(rac, true);
testTest(nrac, false);
这样时,不实现RandomAccess接口的执行速度要快,结果
实现了RandomAccess接口使用了218毫秒
没有实现RandomAccess接口使用了172毫秒
实现了RandomAccess接口使用了187毫秒
没有实现RandomAccess接口使用了172毫秒

而当RUN方法中的执行顺序是:
testTest(nrac, false);
testTest(rac, true);
时,实现RandomAccess接口的执行速度要快,结果
没有实现RandomAccess接口使用了219毫秒
实现了RandomAccess接口使用了156毫秒
没有实现RandomAccess接口使用了203毫秒
实现了RandomAccess接口使用了156毫秒

而在API中写道,实现RandomAccess接口类的速度要快一些的。比较迷惑,为什么先执行的方法用的时间要长很多?
0
0
分享到:
评论
2 楼 songhongchen 2009-04-14  
crazycode 写道

我也遇到过这个问题,我的理解是先执行的方法,jvm需要初始化,因此会使用更多的时间。

你说的有道理,我想也差不多,jvm初始化需要时间,但我感觉我的System.currentTimeMillis();执行的时候,jvm应该初始化完成了.

还有就是怎么样才能真正的测试出想要的结果呢
1 楼 crazycode 2009-04-14  
我也遇到过这个问题,我的理解是先执行的方法,jvm需要初始化,因此会使用更多的时间。

相关推荐

    电脑快速测试工具

    测试时间还太长?测试数据不客观?测试数据看不懂? 快来使用电脑快速测评工具 单文件版本,无需安装,点开立即测试! 测试全面,包括CPU,内存,硬盘,闪存,固态硬盘(SDD),独立显卡,集成显卡等等...... 跨...

    IT 学生解惑真经 从此不再迷惑

    你还在为自己的前途而迷惘不知所措吗??她会带领你走出迷惑,走向成功!

    增加外链的101的无敌方法.doc

    101个增加外链的方法,增加反向链接是一件费时间,令人烦恼,有时候让人迷惑的事。但是,无可避免。最终,链接是好的排名的王牌。很多人希望情况会改变。下面先看2个问题: 1)建立反向链接在一段时间内对排名还很重要吗...

    论文研究-代码迷惑及其有效性研究.pdf

    从攻击视角指出,盲目采用代码迷惑并不能有效增强程序安全性,而根据攻击模型,从多个角度综合运用各种码迷惑方法将能有效提高程序安全。随后建立攻击模型,将攻击描述为一个不断提取程序信息并据此分析具体语义,...

    轻的准标量子介子和双迷惑的重子散​​射长度,重夸克-反夸克对称

    包括反冲效果以及自旋12和自旋32双倍增距重子之间的质量分裂。 为了给出数值结果,我们以形式协变方法构造了具有重双夸克-反夸克对称性的手性拉格朗日算子。 然后,我们将双重迷惑的重子的低能常数与D(*)介子的...

    数学哲学一个充满迷惑的领域

    数学哲学一个充满迷惑的领域 数学哲学一个充满迷惑的领域

    硬盘测试工具 Parkdale 3.03.zip

    Parkdale 中文版为您提供了一个坚固而整洁的工具,主要用于测试硬盘驱动器的性能,同时还可以帮助您对光驱和网络连接进行基准测试。此外,它可与USB闪存驱动器一起使用,并通知您捕获的速度是低速还是最佳速度。 ...

    java-意想不到的迷惑

    Java解惑,以大量java实例,讲述如何在程序中避免程序缺陷和程序陷阱的,解惑的过程中,介绍了一些Java编程语言中许多不易被掌握的知识点,其阅读价值非常高,适合具有Java知识的学习者和有编程经验的Java程序员阅读...

    给网站制作一个完美的优化方案

    从谷歌分析工具中可以看到网站的一些基本数据,记录这些基本的数据,可以清楚的和优化后的网站进行对比,这样才能看出网站优化后到底有没有效果。从而判断我们的网站优化是否成功,这也是站长们想看到的最终结果。 ...

    IT学生解惑真经在校的 IT 学生有几百万 都在为如何如何学习才能找到工作、融入社会而迷惑 我们需要的不是灵丹妙药 而是一本让你少走几年弯路的

    在校的 IT 学生有几百万 都在为如何如何学习才能找到工作、融入社会而迷惑 我们需要的不是灵丹妙药 而是一本让你少走几年弯路的

    解析WiMAX 未来无线宽带实现随时随地

    也许会有很多消费者会一时迷惑,WiMAX无线网络到底是什么?WiMAX为何会让中国的传统电信运营商这么急于并且是秘密测试?笔记本电脑加入WiMAX技术意味着什么,与现在的802.11a/b/g无线技术有什么区别。本文将从技术的...

    颜色迷惑人HTML5游戏源码

    颜色迷惑人HTML5游戏源码,运行需要服务器环境,已经反复测试,放心使用。

    基于C#开发伪造一个Mysql服务端迷惑攻击者躲避爆破攻击+开发文档说明(竞赛设计&课程设计&项目开发)

    基于C#开发伪造一个Mysql服务端迷惑攻击者躲避爆破攻击+开发文档说明,适合竞赛设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于C#开发伪造一个Mysql服务端迷惑攻击者...

    单词风暴

    《单词风暴》是快速记忆的背词工具,其独有的风暴记忆法,打破传统记忆方法,最适合大词汇量的快速记忆。经试验,一般记忆水平的用户,可达到每小时完全记住100生词的水平,较熟练用户可达到200词/小时的水平,熟练...

    java中静态代码块与构造方法的执行顺序判断

    对静态代码块以及构造函数的执行先后顺序,一直很迷惑,直到最近看到一段代码,发现终于弄懂了,所以这篇文章主要给大家介绍了关于如何判断java中静态代码块与构造方法的执行顺序的相关资料,需要的朋友可以参考下。

    Java游戏源码,蚂蚁迷惑,Android游戏源码

    蚂蚁迷惑是一款益智休闲游戏,玩家需要在有限时间内帮助蚂蚁寻找食物,具有挑战性和娱乐性。Android游戏源码则涵盖了各种不同类型的游戏,如动作、冒险、射击等,开发者可以通过学习这些源码来提高他们的开发能力,...

    用C/C++实现代码的动态修改(SMC)

    由于该技术需要直接读写对内存中的机器码,所以多采用汇编语言实现,这使得很多想在自己的程序中使用SMC技术进行软件加密的C/C++程序员望而却步。针对这种现状,本文提出了几种基于C/C++语言的机器指令定位方法,...

    基于C语言EOF与getchar()的使用详解

    因此,感觉很有必要总结一下,不然,很多琐碎的知识点长时间过后就会淡忘的,只有写下来才是最好的方法。 其实,getchar()最典型的程序也就几行代码而已。本人所用的环境是DebianGNU/Linux,在其他系统下也一样。 一...

    基于Java多线程隐藏数组下标变换表达式的代码迷惑算法.pdf

    基于Java多线程隐藏数组下标变换表达式的代码迷惑算法.pdf

Global site tag (gtag.js) - Google Analytics