我有一段代码,似乎需要花费不寻常的时间来执行.我需要尽可能地降低执行速度.
本质上,代码执行以下操作.我创建了一个对象数组[10] [10] [10].该对象包含一个数字列表,如下所示:
class MyClass{
ArrayList<Integer> numberList;
public MyClass(){
numberList= new ArrayList <Integer> ();
}
}
MyClass storage[][][] = new MyClass[10][10][10];
Run Code Online (Sandbox Code Playgroud)
然后,我有以下代码,将数字添加到列表中
for(int i =0; i < 200000;i++){
for(int j = 0; j < 10; j++){
for(int k = 0; k < 10; k++){
for(int l = 0; l < 10; l++){
storage[j][k][l].numberList.add(i);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我很确定绝大多数执行时间来自以下行
storage[j][k][l].numberList.add(i);
Run Code Online (Sandbox Code Playgroud)
更具体地说,它是.add(i).
我是Java的新手,我只熟悉C++.如果ArrayList类似于C++中的列表,那么肯定在末尾添加一个元素需要非常少的CPU时间?是不是因为我做了很多添加操作(可能是一百万)?
我想问的另一件事是我可以通过使用线程加快速度吗?(假设双核处理器有4个线程)我想我可以创建4个线程,每个线程处理50,000个块.但是,我不确定同步.据推测,我必须在存储[] [] []上进行一些互斥.我需要写吗?
synchronized(storage)
Run Code Online (Sandbox Code Playgroud)
或者这样会好吗?
synchronized(storage[j][k][l])
Run Code Online (Sandbox Code Playgroud)
任何帮助非常感谢
问候
java ×1