以下的代码:
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),独立显卡,集成显卡等等...... 跨...
Java编程语言中存在一些容易让人迷惑的特性,这些特性可能会导致程序出现意想不到的错误。本文将探讨两个具体的Java谜题,一个是关于整数取余操作的奇数性判断,另一个涉及浮点数精度问题。 首先,让我们来看第一个...
4. 执行时间和迷惑不可逆性:文档中提到的代码迷惑器在执行时间上开销较小,这意味着经过迷惑处理的代码对程序运行性能的影响微乎其微。此外,所实现的代码迷惑不可逆,也就是说,一旦源代码经过迷惑处理,就很难...
4. **线程管理**:加载动画通常在主线程执行,但如果是长时间的网络请求,应该将实际的数据加载放到子线程,避免阻塞UI。使用`AsyncTask`、`Handler`、`Retrofit`+`RxJava`等方式可以很好地处理这种异步任务。 5. *...
"基于Java多线程隐藏数组下标变换表达式的代码迷惑算法" 本文介绍了一种基于Java多线程的代码迷惑算法,该算法可以隐藏数组下标变换表达式,以防止源代码静态分析和基于源代码植入反迷惑攻击。该算法的核心思想是...
批处理脚本是一种在Windows操作系统环境下执行的一系列命令集合,通常以.bat或.cmd为扩展名。这些脚本文件用于自动化日常任务,节省用户手动操作的时间。"迷惑批处理脚本破除"的主题意味着我们将探讨一些可能包含...
包括反冲效果以及自旋12和自旋32双倍增距重子之间的质量分裂。 为了给出数值结果,我们以形式协变方法构造了具有重双夸克-反夸克对称性的手性拉格朗日算子。 然后,我们将双重迷惑的重子的低能常数与D(*)介子的...
首先,迷惑在于缺乏明确的目标,很多考生在选择专业和学校上花费过多时间,影响了复习进度。其次,犹豫不决导致决策延迟,使学习效率降低。例如,一些在职人员在是否辞职备考之间摇摆不定,导致时间白白流逝。第三,...
在IT行业中,尤其是在游戏开发和数字内容创作领域,Flash是一种广泛使用的工具,用于创建交互式动画和应用程序。本文将深入探讨“向前跳转迷惑FLASH反编译”这一主题,这通常与保护Flash源文件(FLA)的安全性相关,...
### 人工智能迷惑行为大赏 #### 一、人工智能的“幽默”瞬间 ##### 1.1 语音识别 - **情景描述**:用户对语音助手说:“请帮我预订一张明天上午10点去北京的火车票。”人工智能系统回答:“好的。”随后自动打开...
总的来说,追求代码质量不仅仅是满足测试覆盖率的指标,而是要理解代码的实际执行情况,以及它如何满足业务需求和设计原则。开发者应当谨慎对待测试覆盖报告,同时运用多种方法和工具,确保代码的健壮性和可维护性。...
### 数学哲学:一个充满迷惑的领域 #### 维特根斯坦与数学哲学 维特根斯坦被公认为是当代最具原创性和影响力的哲学家之一。本文聚焦于他对数学哲学问题的独特见解及其对这一领域的贡献。这种关注不仅仅源于作者对...
《颜色迷惑人HTML5游戏源码》是一款基于HTML5技术开发的在线小游戏,它通过色彩的变换和逻辑挑战,为玩家提供了一种独特的娱乐体验。HTML5是现代网页开发的标准,具有良好的跨平台兼容性和丰富的功能特性,使得游戏...
Parkdale 中文版为您提供了一个坚固而整洁的工具,主要用于测试硬盘驱动器的性能,同时还可以帮助您对光驱和网络连接进行基准测试。此外,它可与USB闪存驱动器一起使用,并通知您捕获的速度是低速还是最佳速度。 ...
2. **为什么需要布局管理器?** 布局管理器使得UI设计更具灵活性和响应性,无需手动调整每个控件的位置和大小,尤其在不同屏幕分辨率和设备上,可以保证UI的美观和可用性。 3. **如何添加布局?** 通常,我们可以...
在Java编程语言中,"Java91个迷惑的问题"涵盖了各种各样的技术难点和常见陷阱,这些谜题和表达式谜题旨在帮助开发者深化对Java的理解。以下是一些可能涉及的知识点,它们可能会出现在"java解惑.pdf"文档中: 1. **...
企业执行力是组织成功的关键因素,它涉及到如何将战略目标转化为实际行动并取得预期成果。这篇文档主要探讨了五种帮助企业建立健康执行力心态的方法。 首先,"现实心态"强调将目标与现实相结合。这意味着企业需要...
综上所述,营销队伍执行力的培养与管理涉及组织文化、个人角色定位、时间管理、团队协作和决策制定等多个层面。通过不断学习和改进,企业可以构建一支高效、适应性强的营销团队,以应对市场竞争并实现持续发展。
购买笔记本电脑时,需要注意多个方面以确保选购到适合自己需求的产品。以下是对这些注意事项的详细解释: 1. **不懂装懂**:在购买笔记本电脑时,如果你对产品不熟悉,尽量不要假装内行。否则,销售人员可能会利用...