Cell'in Hesaplama Süresini azaltın. Hesaplama yöntemi
Olası Kullanım Senaryoları
Normalde, kullanıcıların aramasını öneririz.Workbook.CalculateFormula()yöntemini bir kez kullanın ve ardından tek tek hücrelerin hesaplanan değerlerini alın. Ancak bazen kullanıcılar tüm çalışma kitabını hesaplamak istemezler. Sadece tek bir hücreyi hesaplamak istiyorlar. Aspose.Cells sağlarCalculationOptions.Recursive ayarlayabileceğiniz özellikYANLIŞ ve bireysel hücrenin hesaplama süresini önemli ölçüde azaltacaktır. Çünkü özyinelemeli özellik olarak ayarlandığındadoğru , ardından hücrelerin tüm bağımlıları her aramada yeniden hesaplanır. Ancak özyinelemeli özellik olduğundaYANLIŞ, ardından bağımlı hücreler yalnızca bir kez hesaplanır ve sonraki çağrılarda tekrar hesaplanmaz.
Cell.Calculate() yönteminin Hesaplama Süresini azaltın
Aşağıdaki örnek kod, kullanımını göstermektedirCalculationOptions.Recursive Emlak. Lütfen bu kodu verilenlerle yürütünörnek excel dosyası ve konsol çıktısını kontrol edin. Özyinelemeli özelliğin şu şekilde ayarlandığını göreceksiniz:YANLIŞhesaplama süresini önemli ölçüde azaltmıştır. Lütfen bu mülkü daha iyi anlamak için yorumları da okuyun.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Test calculation time after setting recursive true | |
TestCalcTimeRecursive(true); | |
// Test calculation time after setting recursive false | |
TestCalcTimeRecursive(false); |
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
static void TestCalcTimeRecursive(bool rec) | |
{ | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Load your sample workbook | |
Workbook wb = new Workbook(dataDir + "sample.xlsx"); | |
// Access first worksheet | |
Worksheet ws = wb.Worksheets[0]; | |
// Set the calculation option, set recursive true or false as per parameter | |
CalculationOptions opts = new CalculationOptions(); | |
opts.Recursive = rec; | |
// Start stop watch | |
Stopwatch sw = new Stopwatch(); | |
sw.Start(); | |
// Calculate cell A1 one million times | |
for (int i = 0; i < 1000000; i++) | |
{ | |
ws.Cells["A1"].Calculate(opts); | |
} | |
// Stop the watch | |
sw.Stop(); | |
// Calculate elapsed time in seconds | |
long second = 1000; | |
long estimatedTime = sw.ElapsedMilliseconds / second; | |
// Print the elapsed time in seconds | |
Console.WriteLine("Recursive " + rec + ": " + estimatedTime + " seconds"); | |
} |
Konsol Çıkışı
Bu, verilen ile çalıştırıldığında yukarıdaki örnek kodun konsol çıktısıdır.örnek excel dosyası makinemizde. Lütfen unutmayın, çıktınız farklı olabilir, ancak özyinelemeli özelliği şu şekilde ayarladıktan sonra geçen süre:YANLIŞ ayarlamaktan her zaman daha az olacaktır.doğru.
Recursive True: 96 seconds
Recursive False: 42 seconds