[opencms-dev] speed of CmsExport / ZipOutputStream bug
Alexander Kandzior
alex at opencms.org
Thu Aug 10 09:11:46 CEST 2006
Ruben,
Thanks for your note about the export speed.
> this is a serious bug in java, verfied to exist in 1.5.0_07,
Can you provide any pointers (URLs) where this bug in Java is described? I
would like to verify this before including such a patch in the official
release.
Kind Regards,
Alex.
-------------------
Alexander Kandzior
Alkacon Software GmbH - The OpenCms Experts
http://www.alkacon.com - http://www.opencms.org
> -----Original Message-----
> From: opencms-dev-bounces at opencms.org
> [mailto:opencms-dev-bounces at opencms.org] On Behalf Of Ruben Malchow
> Sent: Wednesday, August 09, 2006 10:50 PM
> To: The OpenCms mailing list
> Subject: Re: [opencms-dev] speed of CmsExport / ZipOutputStream bug
>
>
> hello list,
>
> i have written a little patch for the problem described below. built
> from the 6.0.x and 6.2.x branches from the cvs, respectively:
>
> http://disco.kalkatraz.de/opencms/opencms-6.0.x-rm1.jar
> http://disco.kalkatraz.de/opencms/opencms-6.2.x-rm1.jar
>
> and the corresponding sources:
>
> http://disco.kalkatraz.de/opencms/opencms_6.0.x-rm1_src.zip
> http://disco.kalkatraz.de/opencms/opencms_6.2.x-rm1_src.zip
>
> the only change is in
>
> /org/opencms/importexport/CmsExport.java
>
> if you are running jdk1.5* and want to give it a try, replace the
> original opencms.jar with the matching ones here.
>
> .rm
>
>
>
> Ruben Malchow schrieb:
> >
> >
> > hello list,
> >
> > i can't stop wondering: this time, i wonder if it's possible that
> > exporting 10 files around 3mb each can take more than 15
> minutes? so,
> > this is a 3ghz p4, 2g ram: no swapping going on, and - this
> is weird -
> > not even a lot of disk activity, the system is at 100% ...
> what's taking
> > so long?
> >
> > i dived into this, and did a little test: the ZipInputStream is
> > EXTREMELY inefficient when it's being confronted with LARGE
> byte arrays.
> >
> > so, instead of <1sec when reading from a file and writing
> to a ZipEntry
> > in 1024-byte chunks, it took 60ms to read the entire ~3mb to a byte
> > array, and then MORE THAN ONE HUNDRED SECONDS to write it
> to the zip entry.
> >
> > now, i don't use capital letters very often, but the
> ZipOutputStream
> > seem to be incredibly inefficient. so basically, i propose
> to replace
> > this code in CmsExport.java:
> >
> > getExportZipStream().write(file.getContents());
> >
> > with this code:
> >
> > byte[] buff=file.getContents();
> > int offset=0;
> > int chunkSize=1024;
> > while((buff.length-offset)>0) {
> > getExportStream.write(
> > buff,
> > offset,
> > Math.min(chunkSize,(buff.length-offset))
> > );
> > offset+=chunkSize;
> > }
> >
> > to speed the export up by an incredible 10000 percent -
> especially if
> > you have lots of large files. this is a serious bug in
> java, verfied to
> > exist in 1.5.0_07, but not in 1.4.2_08 on win32, but
> anticipating this
> > wouldn't hurt very much. in an example on java.sun.com,
> they even used a
> > bigger buffer (4096 byte) ...
> >
> >
> > .rm
> >
> >
> >
> > _______________________________________________
> > This mail is sent to you from the opencms-dev mailing list
> > To change your list options, or to unsubscribe from the
> list, please visit
> > http://lists.opencms.org/mailman/listinfo/opencms-dev
> >
>
> _______________________________________________
> This mail is sent to you from the opencms-dev mailing list
> To change your list options, or to unsubscribe from the list,
> please visit
> http://lists.opencms.org/mailman/listinfo/opencms-dev
>
>
More information about the opencms-dev
mailing list