¿Por qué la corriente de proceso de copia de manera constante se degrada en el rendimiento

clavo de olor:

Este código funciona más lento y más lento al copiar archivos de gran tamaño. ¿Estoy haciendo algo mal?

    InputStream ms2 = new BufferedInputStream(new FileInputStream("/home/fedd/Videos/homevid.mp4"));
    OutputStream fos2 = new BufferedOutputStream(new FileOutputStream("testfile2.mp4", true));

    try {
        int byt;
        int i = 0;
        long time = System.currentTimeMillis();
        while ((byt = ms2.read()) != -1) {
            fos2.write(byt);
            i++;
            if (i > 100000) {
                i = 0;
                long took = System.currentTimeMillis() - time;
                System.out.println("100000 bytes took " + took + " milliseconds which means " + (100000000 / took) + " bytes per second");
            }
        }
        fos2.close();
        ms2.close();
    } catch (Exception e) {
        throw new RuntimeException(e);
    }

Mi Java es:

OpenJDK 10.0.2 17/07/2018 OpenJDK Runtime Environment (build 10.0.2 + 13-Ubuntu-1ubuntu0.18.04.4)

OpenJDK 64-Bit servidor VM (build 10.0.2 + 13-Ubuntu-1ubuntu0.18.04.4, modo mixto)

Ekamjit Singh:

Es necesario para restablecer la base de 'tiempo' después de cada comparación. Trate de usar esto:

if (i > 100000) {
    i = 0;
    long took = System.currentTimeMillis() - time;
    time = System.currentTimeMillis();
    System.out.println("100000 bytes took " + took + " milliseconds which means " + (100000000 / took) + " bytes per second");
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=196325&siteId=1
Recomendado
Clasificación