Büyük Veri Kümelerine Sahip Büyük Dosyalarla Çalışırken Bellek Kullanımını Optimize Etme
Büyük veri kümeleri içeren bir çalışma kitabı oluştururken veya büyük bir Microsoft Excel dosyasını okurken, işlemin alacağı toplam RAM miktarı her zaman endişe vericidir. Zorlukla başa çıkmak için uyarlanabilecek önlemler var. Aspose.Cells bazı ilgili seçenekler sunar ve API hafıza kullanımını azaltmak, azaltmak ve optimize etmek için çağrı yapar. Ayrıca, sürecin daha verimli çalışmasına ve daha hızlı çalışmasına yardımcı olabilir.
KullanmakBellek Ayarı.MEMORY_PREFERENCE Genel bellek maliyetini azaltmak için hücreler verileri için kullanılan belleği optimize etme seçeneği. Hücreler için büyük veri seti oluştururken, varsayılan ayarı kullanmaya kıyasla belirli bir miktarda bellek tasarrufu sağlayabilir.Bellek Ayarı.NORMAL.
Belleği Optimize Etme
Büyük Excel Dosyalarını Okuma
Aşağıdaki örnek, büyük bir Microsoft Excel dosyasının optimize edilmiş modda nasıl okunacağını gösterir.
// 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); |
Büyük Excel Dosyaları Yazma
Aşağıdaki örnek, optimize edilmiş modda bir çalışma sayfasına büyük bir veri kümesinin nasıl yazılacağını gösterir.
// 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(); |
Dikkat
Varsayılan seçenek,Bellek Ayarı.NORMALtüm sürümler için geçerlidir. Hücreler için büyük bir veri kümesi içeren bir çalışma kitabı oluşturmak gibi bazı durumlarda,Bellek Ayarı.MEMORY_PREFERENCEseçeneği bellek kullanımını optimize edebilir ve uygulama için bellek maliyetini azaltabilir. Ancak bu seçenek aşağıdaki gibi bazı özel durumlarda performansı düşürebilir.
- Cells’e Rastgele ve Tekrarlayarak Erişim : Hücre koleksiyonuna erişmek için en verimli sıralama, bir satırda hücre hücre ve ardından satır satırdır. Özellikle, Numaralandırıcı tarafından alınan satırlara/hücrelere erişirsenizCells, Satır Koleksiyonu veSıra , performans ile maksimize edilecektirBellek Ayarı.MEMORY_PREFERENCE.
- Cells & Satır Ekleme ve Silme : Lütfen Cells/Satırlar için çok sayıda ekleme/silme işlemi varsa, performans düşüşünün dikkate değer olacağını unutmayın.Bellek Ayarı.MEMORY_PREFERENCE modu ile karşılaştırıldığındaBellek Ayarı.NORMALmod.
- Farklı Cell Tiplerinde Çalışma : Hücrelerin çoğu dize değerleri veya formüller içeriyorsa, bellek maliyeti aynı olacaktır.Bellek Ayarı.NORMALancak çok sayıda boş hücre varsa veya hücre değerleri sayısal, bool vb. ise,Bellek Ayarı.MEMORY_PREFERENCEseçeneği daha iyi performans verecektir.