【发布时间】:2015-05-01 04:16:41
【问题描述】:
在我的 java 代码中,我怀疑 java.util.ArrayDeque 的大小正在影响性能,但我想在这里确认是否是这种情况。
while (!otherClass.getDeque().isEmpty()){
Trajectory t1 = otherClass.getDeque.remove();
Runnable tr1 = new TrajectoryThread();
Thread thread1 = new Thread(tr1);
thread1.start();
if (!otherClass.getDeque().isEmpty()){
Trajectory t2 = otherClass.getDeque.remove();
Runnable tr2 = new TrajectoryThread();
Thread thread2 = new Thread(tr2);
thread2.start();
在我的代码中,如果双端队列不为空,我会删除一个轨迹对象,并在一个新线程上启动一个模拟,直到 40 个模拟同时运行。在每次模拟结束时,都有可能将更多轨迹添加到队列中。如果在所有模拟完成后仍有轨迹留在队列中,则该过程将自行重复。
我使用的操作是 remove()、add()、isEmpty(),以及从另一个类中获取 Deque。在为每次迭代计时时,我发现对于 4421 个对象的 Deque 大小,它需要 7756 毫秒。而对于 103 个对象的 Deque 大小,则需要 43 毫秒。
【问题讨论】:
-
您忘记提及您使用的是哪个 Deque 实现。
-
“从另一个类获取[一个对象]”并不是真正的“操作”。
-
不要依赖即兴时间测量的结果。你是如何测量的?
-
你的问题是什么?
-
我正在使用 java.util.ArrayDeque。我用这个作为时间:
标签: java performance data-structures arraydeque