J'ai deux vecteurs connectés de tableaux de nombres. Quel est le moyen le plus rapide de les écrire/lire? Devrais-je utiliser la sérialisation (de) par défaut ou une autre technique? XML est bien sûr trop inefficace.Quel est le moyen le plus rapide d'écrire/lire une grande table de nombres en Java?
Répondre
Ecrivez-les comme un fichier binaire où les 4 premiers octets est un nombre de combien, et tous les 4 octets après que ce soit un nombre.
MISE À JOUR: exemple de code
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Vector;
/**
* Write the numbers in binary.
*/
public class WriteBinary {
public static void main(String[] argv) throws IOException {
Vector<int> numbers = getVectorOfNumbers();
int size = numbers.size();
String FILENAME = "binary.dat";
DataOutputStream os = new DataOutputStream(new FileOutputStream(
FILENAME));
os.writeInt(size);
for(int n : numbers) {
os.writeInt(n);
}
os.close();
System.out.println("Wrote " + size + " numbers to file " + FILENAME);
}
}
Je pense que vous devez –
Vous ne pouvez pas avoir un vecteur
Ce sera * beaucoup * plus rapide si vous utilisez un BufferedOutputStream. –
unefficient? C'est antipossible! :-) – paxdiablo
Merci, Ralph Wiggum. http://www.makefive.com/categories/entertainment/television/most-brilliant-simpsons-quotes/me-fail-english-that_s-unpossible---ralph-wiggum – duffymo
XML est inefficace? Pourquoi, à l'époque, nous devions lire des numéros de cartes perforées. Et nous l'avons aimé. –