Reduzca el tiempo de cálculo de Cell. Método de cálculo

Posibles escenarios de uso

Normalmente, recomendamos a los usuarios que llamenLibro de trabajo. Calcular fórmula () una vez y luego obtenga los valores calculados de las celdas individuales. Pero a veces, los usuarios no quieren calcular todo el libro de trabajo. Solo quieren calcular una sola celda. Aspose.Cells proporcionaCalculationOptions.Recursivo propiedad que puede establecerfalsoy disminuirá significativamente el tiempo de cálculo de la celda individual. Porque cuando la propiedad recursiva se establece enverdaderoluego todos los dependientes de las celdas se vuelven a calcular en cada llamada. Pero cuando la propiedad recursiva se establece enfalso, las celdas dependientes se calculan solo una vez y no se vuelven a calcular en llamadas posteriores.

Reduzca el tiempo de cálculo del método Cell.Calculate()

El siguiente código de ejemplo ilustra el uso deCalculationOptions.Recursivo propiedad. Por favor, ejecute este código con el dadoejemplo de archivo de Excel y verifique su salida de consola. Encontrará que establecer la propiedad recursiva enfalsoha disminuido significativamente el tiempo de cálculo. Lea también los comentarios para una mejor comprensión de esta propiedad.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
public static void main(String[] args) throws Exception {
// Test calculation time after setting recursive true
TestCalcTimeRecursive(true);
// Test calculation time after setting recursive false
TestCalcTimeRecursive(false);
}
// --------------------------------------------------
static void TestCalcTimeRecursive(boolean rec) throws Exception {
String dataDir = Utils.getDataDir(DecreaseCalculationTime.class);
// Load your sample workbook
Workbook wb = new Workbook(dataDir + "sample.xlsx");
// Access first worksheet
Worksheet ws = wb.getWorksheets().get(0);
// Set the calculation option, set recursive true or false as per parameter
CalculationOptions opts = new CalculationOptions();
opts.setRecursive(rec);
// Start calculating time in nanoseconds
long startTime = System.nanoTime();
// Calculate cell A1 one million times
for (int i = 0; i < 1000000; i++) {
ws.getCells().get("A1").calculate(opts);
}
// Calculate elapsed time in seconds
long second = 1000000000;
long estimatedTime = System.nanoTime() - startTime;
estimatedTime = estimatedTime / second;
// Print the elapsed time in seconds
System.out.println("Recursive " + rec + ": " + estimatedTime + " seconds");
}

Salida de consola

Esta es la salida de la consola del código de muestra anterior cuando se ejecuta con el dadoejemplo de archivo de Excel en nuestra máquina. Tenga en cuenta que su salida puede diferir, pero el tiempo transcurrido después de establecer la propiedad recursiva enfalso siempre será menor que establecerlo enverdadero.

 Recursive true: 51 seconds

Recursive false: 16 seconds