【发布时间】:2016-08-27 10:33:07
【问题描述】:
对于我的工作,我对时间表进行了一些测试。 我遇到了令我惊讶的事情,需要帮助来理解它。
我使用很少的数据结构作为队列,想知道根据项目数量删除的速度如何。而具有 10 个项目的 arraylist,从前面删除并且未设置初始容量比设置初始容量(至 15)要慢得多。为什么?以及为什么它在 100 件商品上是一样的。
数据结构:L - 实现列表,C - 设置初始容量,B - 从后面移除,Q - 实现队列
编辑: 附加相关代码
new Thread(new Runnable() {
@Override
public void run()
{
long time;
final int[] arr = {10, 100, 1000, 10000, 100000, 1000000};
for (int anArr : arr)
{
final List<Word> temp = new ArrayList<>();
while (temp.size() < anArr) temp.add(new Item());
final int top = (int) Math.sqrt(anArr);
final List<Word> first = new ArrayList<>();
final List<Word> second = new ArrayList<>(anArr);
...
first.addAll(temp);
second.addAll(temp);
...
SystemClock.sleep(5000);
time = System.nanoTime();
for (int i = 0; i < top; ++i) first.remove(0);
Log.d("al_l", "rem: " + (System.nanoTime() - time));
time = System.nanoTime();
for (int i = 0; i < top; ++i) second.remove(0);
Log.d("al_lc", "rem: " + (System.nanoTime() - time));
...
}
}
}).start();
【问题讨论】:
-
不清楚你对这次的评价如何。是微基准测试吗?它在哪里?你应该提供一些代码来玩。
标签: java