Optimera minnesanvändning när du arbetar med stora filer med stora datamängder
När du bygger en arbetsbok med stora datamängder, eller läser en stor Microsoft Excel-fil, är den totala mängden RAM som processen kommer att ta alltid ett problem. Det finns åtgärder som kan anpassas för att klara utmaningen. Aspose.Cells ger några relevanta alternativ och API-anrop för att minska, minska och optimera minnesanvändningen. Det kan också hjälpa processen att fungera mer effektivt och köras snabbare.
AnvändMemorySetting.MemoryPreferencealternativ för att optimera minnesanvändningen för celldata och minska den totala minneskostnaden. När du bygger en stor datamängd för celler kan den spara en viss mängd minne jämfört med att använda standardinställningen (MemorySetting.Normal).
Optimera minnet
Läsa stora Excel-filer
Följande exempel visar hur man läser en stor Microsoft Excel-fil i optimerat läge.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Specify the LoadOptions | |
LoadOptions opt = new LoadOptions(); | |
// Set the memory preferences | |
opt.MemorySetting = MemorySetting.MemoryPreference; | |
// Instantiate the Workbook | |
// Load the Big Excel file having large Data set in it | |
Workbook wb = new Workbook(dataDir+ "Book1.xlsx", opt); |
Skriva stora Excel-filer
Följande exempel visar hur man skriver en stor datamängd till ett kalkylblad i ett optimerat läge.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Instantiate a new Workbook | |
Workbook wb = new 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.MemorySetting = MemorySetting.MemoryPreference; | |
// 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 cells = wb.Worksheets[0].Cells; | |
cells.MemorySetting = MemorySetting.MemoryPreference; | |
// 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; | |
// ......... | |
// Input large dataset into the cells of the worksheet. | |
// Your code goes here. | |
// ......... |
Varning
Standardalternativet,MemorySetting.Normaltillämpas för alla versioner. För vissa situationer, som att bygga en arbetsbok med en stor datamängd för celler,MemorySetting.MemoryPreferencealternativet kan optimera minnesanvändningen och minska minneskostnaden för programmet. Det här alternativet kan dock försämra prestandan i vissa speciella fall som följer.
- Åtkomst till Cells slumpmässigt och upprepade gånger : Den mest effektiva sekvensen för att komma åt cellsamlingen är cell för cell i en rad och sedan rad för rad. Speciellt om du får åtkomst till rader/celler av Enumeratorn som hämtats frånCells, RowCollection ochRad , skulle prestandan maximeras medMemorySetting.MemoryPreference.
- Infoga & Ta bort Cells & Rader : Observera att om det finns många insert/delete-operationer för Cells/Rows, kommer prestandaförsämringen att märkas förMinnespreferens läge jämfört medVanligtläge.
- Fungerar på olika Cell typer : Om de flesta av cellerna innehåller strängvärden eller formler blir minneskostnaden densamma somVanligt läge men om det finns många tomma celler eller cellvärden är numeriska, bool och så vidare,MemorySetting.MemoryPreferencealternativet ger bättre prestanda.