I'm having a problem with a playback speed of my program. Basically the purpose is to go through the folders, seek image sequences and preview them in a grid like layout. The problem I'm having is that I'm unable to playback more then dozen sequences at the same time due to a poor performance - my guess it is either loadImage function or use of arrayList. The core of the program takes place in the draw function which I think was striped down to bare minimum. I was wondering if there is any chance to improve it?
At the moment I'm using arrayLists to store paths to images because each sequence has a different length. I also don't want to load them upfront to save up some memory.
Thanks for help,
Kuba
// Layout
int inRow = 5;
int canvasx = 640;
int canvasy = 480;
int resx = int(floor(canvasx/inRow));
float ratio = (640/480.0);
int resy = floor(resx/ratio);
//
int clips;
PImage im;
ArrayList tempArrayList;
ArrayList folders = new ArrayList();
ArrayList [] sorted;
int sec = 0;
void setup() {
size(canvasx, canvasy, P2D);
//frameRate(24);
// sets the root folder to look for sequences
File rootFile = new File("path/toThe/rootFolder");
Node rootNode = new Node(rootFile);
rootNode.printList();
println("TotalFolders "+folderList.size());
// Remove Null ArrayLists from folderList
for (int i=0; i<folderList.size(); i++) {
tempArrayList=(ArrayList)folderList.get(i);
if (tempArrayList.size() != 0) {
Collections.sort(tempArrayList);
folders.add(tempArrayList);
}
}
println("ImageFolders"+folders.size());
clips = folders.size();
//clips = 20; //limits the number to check the performance
}
void draw() {
background(0);
for (int i=0; i<clips; i++) {
tempArrayList=(ArrayList)folders.get(i);
sec=((int)(millis()/30));
im = loadImage(tempArrayList.get(sec%((tempArrayList.size()))).toString());