Optimisation de l'utilisation de la mémoire lors de l'utilisation de fichiers volumineux contenant de grands ensembles de données

Optimisation de la mémoire

Lecture de gros fichiers Excel

L’exemple suivant montre comment lire un gros fichier Excel Microsoft en mode optimisé.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getDataDir(ReadLargeExcelFiles.class);
// Specify the LoadOptions
LoadOptions opt = new LoadOptions();
// Set the memory preferences
opt.setMemorySetting(MemorySetting.MEMORY_PREFERENCE);
// Instantiate the Workbook
// Load the Big Excel file having large Data set in it
Workbook wb = new Workbook(dataDir + "Book1.xlsx", opt);

Écrire de gros fichiers Excel

L’exemple suivant montre comment écrire un jeu de données volumineux dans une feuille de calcul en mode optimisé.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(WritingLargeExcelFiles.class) + "articles/";
// 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.getSettings().setMemorySetting(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 cells = wb.getWorksheets().get(0).getCells();
cells.setMemorySetting(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.getWorksheets().add("Sheet2").getCells();

Prudence

L’option par défaut,Réglage de la mémoire.NORMALest appliqué pour toutes les versions. Dans certaines situations, telles que la création d’un classeur avec un grand ensemble de données pour les cellules, leMemorySetting.MEMORY_PREFERENCEL’option peut optimiser l’utilisation de la mémoire et réduire le coût de la mémoire pour l’application. Cependant, cette option peut dégrader les performances dans certains cas particuliers tels que les suivants.

  1. Accéder au Cells de manière aléatoire et répétée : La séquence la plus efficace pour accéder à la collection de cellules est cellule par cellule dans une ligne, puis ligne par ligne. Surtout, si vous accédez aux lignes/cellules par l’énumérateur acquis à partir deCells, RowCollection etLigne , les performances seraient maximisées avecMemorySetting.MEMORY_PREFERENCE.
  2. Insertion et suppression de Cells et de lignes : Veuillez noter que s’il y a beaucoup d’opérations d’insertion/suppression pour Cells/Rows, la dégradation des performances sera notable pourMemorySetting.MEMORY_PREFERENCE mode par rapport auRéglage de la mémoire.NORMALmode.
  3. Fonctionnement sur différents types Cell : Si la plupart des cellules contiennent des valeurs de chaîne ou des formules, le coût de la mémoire sera le même queRéglage de la mémoire.NORMALmode mais s’il y a beaucoup de cellules vides, ou si les valeurs des cellules sont numériques, bool et ainsi de suite, leMemorySetting.MEMORY_PREFERENCEl’option offrira de meilleures performances.