Cell.Calculate Yönteminin Hesaplama Süresini Python.NET ile Azaltın
Olası Kullanım Senaryoları
Genellikle, kullanıcıların workbook.calculate_formula() yöntemini bir kez çağırmasını ve ardından bireysel hücrelerin hesaplanan değerlerini almasını öneririz. Tek hücre hesaplamalarıyla çalışırken, calculation_options.recursive özelliğini kullanarak hesaplama süresini önemli ölçüde azaltabilirsiniz. Bu özelliği False
olarak ayarlamak, bağlı hücreleri sonraki çağrılarda yeniden hesaplamayı önler.
Hücre Hesaplama Performansını Optimize Etme
Aşağıdaki örnek, özyinelemeli özelliğin kullanımını gösterir. Performans farkını test etmek için sağlanan örnek Excel dosyasını kullanın. Kod, recursive=False
olarak ayarlamanın gereksiz bağlı hücre yeniden hesaplamalarını önleyerek hesaplama süresini nasıl azalttığını gösterir.
# 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
test_calc_time_recursive(True)
# Test calculation time after setting recursive false
test_calc_time_recursive(False)
import os
import time
from aspose.cells import Workbook, CalculationOptions
def test_calc_time_recursive(rec):
"""
Tests calculation time with recursive option and prints elapsed seconds
"""
# The path to the documents directory
current_dir = os.path.dirname(os.path.abspath(__file__))
data_dir = os.path.join(current_dir, "data")
# Load sample workbook
wb = Workbook(os.path.join(data_dir, "sample.xlsx"))
# Access first worksheet
ws = wb.worksheets[0]
# Set calculation options
opts = CalculationOptions()
opts.recursive = rec
# Start timing
start_time = time.perf_counter()
# Calculate cell A1 one million times
for _ in range(1000000):
ws.cells.get("A1").calculate(opts)
# Calculate elapsed time
elapsed_time = int(time.perf_counter() - start_time)
# Print results
print(f"Recursive {rec}: {elapsed_time} seconds")
Performans Karşılaştırma Sonuçları
Optimize edilmiş kodun örnek dosya ile çalıştırıldığında gösterdiği tipik çıktı önemli ölçüde zaman azalması sağlar:
Recursive True: 96 seconds
Recursive False: 42 seconds