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