Le moyen le plus rapide d'écrire un tableau d'entiers dans un fichier en Java?

Comme le dit le titre, je suis à la recherche de la méthode la plus rapide pour écrire entier tableaux de fichiers. Les tableaux varient en taille, et de façon réaliste contiennent n'importe où entre 2 500 et 25 000 000 ints.

Voici le code, je suis actuellement en utilisant:

DataOutputStream writer = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(filename)));

for (int d : data)
  writer.writeInt(d);

Étant donné que DataOutputStream a une méthode d'écriture de tableaux d'octets, j'ai essayé de convertir le tableau int à un tableau d'octets comme ceci:

private static byte[] integersToBytes(int[] values) throws IOException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    DataOutputStream dos = new DataOutputStream(baos);
    for (int i = 0; i < values.length; ++i) {
        dos.writeInt(values[i]);
    }

    return baos.toByteArray();
}

et comme ceci:

private static byte[] integersToBytes2(int[] src) {
    int srcLength = src.length;
    byte[] dst = new byte[srcLength << 2];

    for (int i = 0; i < srcLength; i++) {
        int x = src[i];
        int j = i << 2;
        dst[j++] = (byte) ((x >>> 0) & 0xff);
        dst[j++] = (byte) ((x >>> 8) & 0xff);
        dst[j++] = (byte) ((x >>> 16) & 0xff);
        dst[j++] = (byte) ((x >>> 24) & 0xff);
    }
    return dst;
}

Les deux semblent donner un mineur augmentation de la vitesse, d'environ 5%. Je n'ai pas testé rigoureusement assez pour confirmer qu'.

Sont là toutes les techniques qui accélèrent ce fichier opération d'écriture, des guides des meilleures pratiques pour Java IO performances d'écriture?

source d'informationauteur Ollie Glass