schumy2000 ha scritto:
Ma che significa scrivere -Xms256m -Xmx3584m dentro il programma?
Il programma sà quante risorse ha, che senso ha scriverglielo all'interno del programma?
Fra l'altro le Apache poi forse sono le migliori librerie in via di circiolazione, forse non ti sovviene un tantino il dubbio che non sei te che gestisci al meglio le risorse?
Non sono le migliori perché quelle di Matlab per esempio scheggiano molto di più, avete detto voi che c'è solo 1 sistema per migliorare la questione dell'heap (-Xms256m -Xmx3584m) inoltre io vi confermo che per scrivere su un file esistente c'è solo questo sistema!!!
package gestione;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Main2 {
public static void main(String[] args) {
int a = 100000;
int b = 100;
Double[][] d = new Double[a][b];
Double m = 1001d;
for (int i = 0; i < d.length; i++) {
for (int j = 0; j < d[0].length; j++) {
d[i][j] = m;
}
}
String nomefoglio = "z.xlsx";
String nomefile = "z.xlsx";
try {
FileInputStream file = new FileInputStream(new File(nomefile));
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet sheet = workbook.getSheet(nomefoglio);
int rownum = 0;
int cellnum = 0;
for (int i = 0; i < a; i++) {
Row row = sheet.createRow(rownum++);
for (int j = 0; j < b; j++) {
Cell cell = row.createCell(cellnum++);
cell.setCellValue((Double) d[i][j]);
}
cellnum = 0;
}
file.close();
FileOutputStream outFile = new FileOutputStream(new File(nomefile));
workbook.write(outFile);
outFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Ho provato a modificare questo codice in diversi modi ma non ho notato vantaggi! Il codice che uso è un po' più complesso però il cuore dello script è scritto sopra. Non vedo modi per migliorarlo! Ma proprio nessuno! Per me le librerie sono delle cag@te...
E' chiaro che se non vi degnate neppure di leggere il codice sopra non capirete mai quello che voglio dire... poco ma sicuro...
XSSFWorkbook workbook = new XSSFWorkbook(file);
in pratica salva file in workbook, non è possibile scrivere un pezzo di "workbook" alla volta...