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