Optimera minnesanvändningen vid arbete med stora filer med stora dataset
När du bygger ett arbetsblad med stora datamängder eller läser en stor Excel-fil är den totala mängden RAM-minne som processen kräver alltid en oro. Det finns åtgärder som kan anpassas för att hantera utmaningen. Aspose.Cells för Python via .NET ger några relevanta alternativ och API-anrop för att sänka, minska och optimera minnesanvändningen. Det kan också hjälpa processen att arbeta effektivare och snabbare.
Använd MemorySetting.MEMORY_PREFERENCE för att optimera minnesanvändningen för celldata och minska den totala minneskostnaden. När man bygger en stor datamängd för celler kan det spara en viss mängd minne jämfört med att använda standardinställningen (MemorySetting.NORMAL).
Optimera minne
Läsning av stora Excel-filer
Det följande exemplet visar hur man läser en stor Microsoft Excel-fil i optimerat läge.
from aspose.cells import LoadOptions, MemorySetting, Workbook | |
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET | |
# The path to the documents directory. | |
dataDir = RunExamples.GetDataDir(".") | |
# Specify the LoadOptions | |
opt = LoadOptions() | |
# Set the memory preferences | |
opt.memory_setting = MemorySetting.MEMORY_PREFERENCE | |
# Instantiate the Workbook | |
# Load the Big Excel file having large Data set in it | |
wb = Workbook(dataDir + "Book1.xlsx", opt) |
Skrivning av stora Excel-filer
Det följande exemplet visar hur man skriver en stor datamängd till en arbetsbok i optimerat läge.
from aspose.cells import MemorySetting, Workbook | |
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET | |
# The path to the documents directory. | |
dataDir = RunExamples.GetDataDir(".") | |
# Instantiate a new Workbook | |
wb = Workbook() | |
# Set the memory preferences | |
# Note: This setting cannot take effect for the existing worksheets that are created before using the below line of code | |
wb.settings.memory_setting = MemorySetting.MEMORY_PREFERENCE | |
# Note: The memory settings also would not work for the default sheet i.e., "Sheet1" etc. automatically created by the Workbook | |
# To change the memory setting of existing sheets, please change memory setting for them manually: | |
cells = wb.worksheets[0].cells | |
cells.memory_setting = MemorySetting.MEMORY_PREFERENCE | |
# Input large dataset into the cells of the worksheet. | |
# Your code goes here. | |
# ......... | |
# Get cells of the newly created Worksheet "Sheet2" whose memory setting is same with the one defined in WorkbookSettings: | |
cells = wb.worksheets.add("Sheet2").cells |
Försiktighet
Standardalternativet, MemorySetting.NORMAL tillämpas för alla versioner. För vissa situationer, som att bygga en arbetsbok med en stor datamängd för celler, kan MemorySetting.MEMORY_PREFERENCE -alternativet optimera minnesanvändningen och minska minneskostnaden för applikationen. Dock kan detta alternativ försämra prestandan i vissa speciella fall som följer.
- Åtkomst av celler slumpmässigt och upprepade gånger: Den mest effektiva sekvensen för att komma åt cellernas samling är cell för cell i en rad, och sedan rad för rad. Särskilt om du får åtkomst till rader/celler via uppräknaren som erhållits från Cells, RowCollection och Row, kommer prestandan att maximera med MemorySetting.MEMORY_PREFERENCE.
- Infoga & Ta bort celler & rader: Observera att om det finns många infogning/ta bort-operationer för celler/rader, kommer prestandaförsämringen märkas för MemoryPreference läge jämfört med Normal läge.
- Infogning & Radering av celler & rader: Observera att om det finns mycket infogning/radering av operationer för celler/rader, kommer prestandanedbrytningen att vara märkbar för MemoryPreference-läget jämfört med Normal-läget.