Optimisation de l'utilisation de la mémoire lors de l'utilisation de fichiers volumineux contenant de grands ensembles de données
Lors de la création d’un classeur avec de grands ensembles de données ou de la lecture d’un gros fichier Excel Microsoft, la quantité totale de RAM que le processus prendra est toujours une préoccupation. Il existe des mesures qui peuvent être adaptées pour faire face au défi. Aspose.Cells fournit des options pertinentes et des appels API pour réduire, réduire et optimiser l’utilisation de la mémoire. En outre, cela peut aider le processus à fonctionner plus efficacement et à s’exécuter plus rapidement.
UtilisationMemorySetting.MEMORY_PREFERENCE option pour optimiser la mémoire utilisée pour les données des cellules afin de réduire le coût global de la mémoire. Lors de la création d’un grand ensemble de données pour les cellules, cela peut économiser une certaine quantité de mémoire par rapport à l’utilisation du paramètre par défautRéglage de la mémoire.NORMAL.
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.
- 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.
- 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.
- 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.