Salve a tutti...mi sono appena iscritto a questo forum (ringrazio gli amministratori per aver accettato la mia domanda di iscrizione);ho iniziato da poco a studiare e programmare in Java, ma ho una buona esperienza di programmazione C e C++. Traducendo in Java alcuni programmi C, ho avuto uno sconcertante problema (spero dipenda soltanto dalla mia poca esperienza su Java). Un programma molto semplice, che deve soltanto generare 2 miliardi di numeri interi Random e stamparli su un file in formato binario, termina in circa 10 minuti nella versione C , mentre in Java per terminare la stampa su file devo aspettare quasi 3 ore...posto di seguito il codice java
è possibile in qualche modo avere un tempo di esecuzione piui' vicino a quello del programma in versione C?codice:import java.io.*; import java.util.Random; import javax.swing.JOptionPane; public class G_FILEF{ public static void main(String[] args) throws IOException{ try(DataOutputStream oput = new DataOutputStream(new FileOutputStream("DATIA1.dat"));){ int D, i, x, qmin, qmax;Random random = new Random();final int RBMAX=3000000; String letta = JOptionPane.showInputDialog("Inserisci N_dati1:");D=Integer.parseInt(letta);oput.writeInt(D);System.out.print("\n"); letta = JOptionPane.showInputDialog("Inserisci [INF_T1]=");qmin=Integer.parseInt(letta);letta = JOptionPane.showInputDialog("Inserisci [SUP_T1]=");qmax=Integer.parseInt(letta); oput.writeInt(qmin);oput.writeInt(qmax); for(i=0;i<D;i++){x=1+random.nextInt(RBMAX-1);oput.writeInt(x);if(i%10000000==0)System.out.print(i+"->"); } oput.close(); } return; } }

Rispondi quotando
.dopo aver inserito BufferedOutputStream e flush la differenza tra C e Java non è piu' percettibile vedendo scorrere sullo schermo quella freccia con il numero di interi stampati che ho inserito proprio per rendermi conto da subito del tempo che ci vuole per terminare l'esecuzione....(non ho avuto ancora il tempo per fare la verifica completa, che credo faro' in serata) - perdona la mia ignoranza, come ho gia' detto sono un principiante sul Java..come posso introdurre e configurare un costruttore per una classe come BufferedOutputStream importata dalla libreria di Java il cui codice non è incluso all'interno del programma ...puoi farmi un esempio con qualche riga di codice per favore?
...ma FileOutputStream va bene solo per i file in formato testo..io sto' lavorando col formato binario...comunque non voglio approfittare troppo della vostra disponibilita'....puoi consigliarmi un manuale di Java .. o documentazione reperibile sul web...dove poter studiare tutte queste belle classi di I/O...

