以下的代码:
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接口类的速度要快一些的。比较迷惑,为什么先执行的方法用的时间要长很多?
分享到:
相关推荐
测试时间还太长?测试数据不客观?测试数据看不懂? 快来使用电脑快速测评工具 单文件版本,无需安装,点开立即测试! 测试全面,包括CPU,内存,硬盘,闪存,固态硬盘(SDD),独立显卡,集成显卡等等...... 跨...
你还在为自己的前途而迷惘不知所措吗??她会带领你走出迷惑,走向成功!
101个增加外链的方法,增加反向链接是一件费时间,令人烦恼,有时候让人迷惑的事。但是,无可避免。最终,链接是好的排名的王牌。很多人希望情况会改变。下面先看2个问题: 1)建立反向链接在一段时间内对排名还很重要吗...
从攻击视角指出,盲目采用代码迷惑并不能有效增强程序安全性,而根据攻击模型,从多个角度综合运用各种码迷惑方法将能有效提高程序安全。随后建立攻击模型,将攻击描述为一个不断提取程序信息并据此分析具体语义,...
包括反冲效果以及自旋12和自旋32双倍增距重子之间的质量分裂。 为了给出数值结果,我们以形式协变方法构造了具有重双夸克-反夸克对称性的手性拉格朗日算子。 然后,我们将双重迷惑的重子的低能常数与D(*)介子的...
数学哲学一个充满迷惑的领域 数学哲学一个充满迷惑的领域
Parkdale 中文版为您提供了一个坚固而整洁的工具,主要用于测试硬盘驱动器的性能,同时还可以帮助您对光驱和网络连接进行基准测试。此外,它可与USB闪存驱动器一起使用,并通知您捕获的速度是低速还是最佳速度。 ...
Java解惑,以大量java实例,讲述如何在程序中避免程序缺陷和程序陷阱的,解惑的过程中,介绍了一些Java编程语言中许多不易被掌握的知识点,其阅读价值非常高,适合具有Java知识的学习者和有编程经验的Java程序员阅读...
从谷歌分析工具中可以看到网站的一些基本数据,记录这些基本的数据,可以清楚的和优化后的网站进行对比,这样才能看出网站优化后到底有没有效果。从而判断我们的网站优化是否成功,这也是站长们想看到的最终结果。 ...
在校的 IT 学生有几百万 都在为如何如何学习才能找到工作、融入社会而迷惑 我们需要的不是灵丹妙药 而是一本让你少走几年弯路的
也许会有很多消费者会一时迷惑,WiMAX无线网络到底是什么?WiMAX为何会让中国的传统电信运营商这么急于并且是秘密测试?笔记本电脑加入WiMAX技术意味着什么,与现在的802.11a/b/g无线技术有什么区别。本文将从技术的...
颜色迷惑人HTML5游戏源码,运行需要服务器环境,已经反复测试,放心使用。
基于C#开发伪造一个Mysql服务端迷惑攻击者躲避爆破攻击+开发文档说明,适合竞赛设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于C#开发伪造一个Mysql服务端迷惑攻击者...
《单词风暴》是快速记忆的背词工具,其独有的风暴记忆法,打破传统记忆方法,最适合大词汇量的快速记忆。经试验,一般记忆水平的用户,可达到每小时完全记住100生词的水平,较熟练用户可达到200词/小时的水平,熟练...
对静态代码块以及构造函数的执行先后顺序,一直很迷惑,直到最近看到一段代码,发现终于弄懂了,所以这篇文章主要给大家介绍了关于如何判断java中静态代码块与构造方法的执行顺序的相关资料,需要的朋友可以参考下。
蚂蚁迷惑是一款益智休闲游戏,玩家需要在有限时间内帮助蚂蚁寻找食物,具有挑战性和娱乐性。Android游戏源码则涵盖了各种不同类型的游戏,如动作、冒险、射击等,开发者可以通过学习这些源码来提高他们的开发能力,...
由于该技术需要直接读写对内存中的机器码,所以多采用汇编语言实现,这使得很多想在自己的程序中使用SMC技术进行软件加密的C/C++程序员望而却步。针对这种现状,本文提出了几种基于C/C++语言的机器指令定位方法,...
因此,感觉很有必要总结一下,不然,很多琐碎的知识点长时间过后就会淡忘的,只有写下来才是最好的方法。 其实,getchar()最典型的程序也就几行代码而已。本人所用的环境是DebianGNU/Linux,在其他系统下也一样。 一...
基于Java多线程隐藏数组下标变换表达式的代码迷惑算法.pdf