You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Dominique De Munck (JIRA)" <ji...@apache.org> on 2017/01/25 16:02:26 UTC

[jira] [Created] (COMPRESS-381) performance issue when using default Wiki/docs bzip2 compression Factory methods

Dominique De Munck created COMPRESS-381:
-------------------------------------------

             Summary: performance issue when using default Wiki/docs bzip2 compression Factory methods
                 Key: COMPRESS-381
                 URL: https://issues.apache.org/jira/browse/COMPRESS-381
             Project: Commons Compress
          Issue Type: Improvement
          Components: Documentation
    Affects Versions: 1.13
         Environment: Windows/All
            Reporter: Dominique De Munck
            Priority: Minor


Hello

We are going to use this project's bzip2 implementation as it performed best for our use case (tested using https://github.com/ning/jvm-compressor-benchmark).

However, when following the default examples using the wiki/example/javadoc pages (*), we were hitting a serious performance bottleneck.

The reason: the default "compress" operation on a file which is suggested, is very slow, maybe because of disk I/O and lack of caching.

For a 2 MB tiff file, bzip2 compression takes about 3 seconds with code (A), whereas code (B) takes only about 0.5 seconds!
So it would be good to adapt documentation or take a look at bottle neck.

Kind regards

Dominique

>>>
FileInputStream fin = new FileInputStream(infile);
BufferedInputStream bufferin = new BufferedInputStream(fin);
final FileOutputStream outStream = new FileOutputStream(outfile);
CompressorOutputStream cos = new CompressorStreamFactory()		         .createCompressorOutputStream(CompressorStreamFactory.BZIP2, outStream);
IOUtils.copy(fin, cos);
cos.close();
>>>

B:
<<<<<
final byte[] uncompressed = Files.readAllBytes(infile.toPath());
ByteArrayOutputStream rawOut = new ByteArrayOutputStream(uncompressed.length);
		
BZip2CompressorOutputStream out = new BZip2CompressorOutputStream(rawOut, COMPRESSION_LEVEL);
out.write(uncompressed);
out.close();
FileOutputStream fos = new FileOutputStream(outfile);
rawOut.writeTo(fos);
fos.close();
>>>>

(*)
Pages with documentation:

https://wiki.apache.org/commons/Compress
https://commons.apache.org/proper/commons-compress/examples.html
https://commons.apache.org/proper/commons-compress/javadocs/api-release/index.html




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)