Я собираю карту из плитки. Как часть этого, у меня есть метод, который заполняет оставшуюся часть карты со случайными зависимыми от ландшафта BufferedImages, когда важные части были нарисованы. Метод fillIn
принимает два аргумента - arraylist BufferedImages и ArrayList из целых чисел. Целые элементы имеют вид, например, 90,92,94,96,98,100 и представляют проценты - два массива ArrayList имеют одинаковый размер, и этот пример будет означать, что 90% вероятность первой плитки составляет 2% из второго и т. д. (на самом деле, вы заметите в моем коде, что это тоже не работает. Это не проблема, я знаю, как это исправить. Еще не сделано.)Ускорение большого количества случайных звонков.
Карта тысяча квадратных квадратов и заполнение этой карты неприемлемо медленны. Есть ли какие-нибудь советы или приемы для ускорения этого? На самом деле, я бы хотел, чтобы это было незаметно быстро.
Учитывая сложность, что SSCE будет не очень коротким, но код метода fillIn ниже, и если какие-либо другие части будут полезны, сообщите мне об этом.
private void fillIn (ArrayList<BufferedImage> b, ArrayList <Integer> r){
for (int i=0; i<FULLGRIDSIZE; i++){
for (int j=0; j<FULLGRIDSIZE; j++){
if (mapArray[i][j] ==null){
Random rand = new Random();
int random = rand.nextInt(100);
for (int loopVar =0 ;loopVar<r.size();loopVar++){
System.out.println(random +" "+ loopVar);
if (random < r.get(loopVar)){
mapArray[i][j] = b.get(loopVar);
break;
}
}
}
}
}
}
Упс, извините. «Println» - это отладочная вещь, поэтому я могу проверить, работает ли цикл. Извините, что я его оставил. – MrB
Хотя WOW! Принимая это, становится абсолютным миром разницы – MrB
@MrB Я знаю, что это было раньше, и я был удивлен разницей также:: '' '' '' System.out.println' в основном делает это печать в файл (в этом случае стандартный выход), поэтому он так долго. – Doorknob