Preview:
/**
 * This is a test to see how much CPU time it takes to generate
 * 100k Cell object instances in a referenceable way and find the most efficient 
 * way to do so.
 * Also calculate how long it takes to then reference each Object instance based
 * on the object x,y,z indexes.
 * Note: the generation of 100 records and adding to the map takes about 240ms
 *       so that needs to be deducted from the instantiation, but is still part
 *       of the calculation required for the solution
 */
// Test Settings
Integer numberOfSheets  = 10;   // wsi
Integer numberOfRows    = 100;  // ri
Integer numberOfColumns = 100;  // ci

// Multidimentional array for storing the cells
Cell[][][] cells = new Cell[][][]{};

// Register start time
Decimal st = Limits.getCpuTime();

// Iterate the number of worksheets
for(Integer wsi=0; wsi < numberOfSheets; wsi++){

    // Add a column / row array for each worksheet
    cells.add(new Cell[][]{});
    
    // Iterate the number of columns
    for(Integer ri=0; ri < numberOfRows; ri++){
        
        // Add a column array for each row
        cells[wsi].add(new Cell[]{});

        // Add Cells to the row
        for(Integer ci = 0; ci < numberOfColumns; ci++){
            cells[wsi][ri].add(new Cell(wsi,ri,ci));
        }
    }
}

// Register end time
Decimal et = Limits.getCpuTime();

// Loop through xyz
for(Integer wsi = 0; wsi < numberOfSheets; wsi++){
    for(Integer ri=0; ri < numberOfRows; ri++){
        for(Integer ci = 0; ci < numberOfColumns; ci++){
            getCell(wsi, ri,ci);
        }
    }
}

// Register final end time
Decimal fet = Limits.getCpuTime();

// Output metrics
System.debug('Generation Time: ' + (et-st)  + ' (' + (numberOfSheets * numberOfRows * numberOfColumns) + ' cells)');
System.debug('Reference  Time: ' + (fet-et) + ' (' + (numberOfSheets * numberOfRows * numberOfColumns) + ' cells)');

/**
 * Method to reference a cell at a certain position
 */
Cell getCell(Integer wsi, Integer ci, Integer ri){
    return cells[wsi][ci][ri];
}


/**
 * Basic class example of a cell
 */
class Cell{
    Integer wsi;
    Integer ri;
    Integer ci;

    Cell(Integer wsi, Integer ri, Integer ci){
        this.wsi = wsi;
        this.ri  = ri;
        this.ci  = ci;
    }
}
downloadDownload PNG downloadDownload JPEG downloadDownload SVG

Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!

Click to optimize width for Twitter