java:ByteArrayOutputStream.toByteArray()的性能
我正在写一个poi工作簿到一个ByteArrayOutputStream
为了获取字节,并通过肥皂消息发送它们。
获取ByteArrayOutputStream
没有问题,但调用.toByteArray()
非常缓慢,并占用了大量的CPU。
我试图转换的工作簿非常大。
有没有人对我如何加快速度提出任何build议?
谢谢你,杰森
你在创buildByteArrayOutputStream对象时是否声明了一个缓冲区大小? 如果没有,则需要花费时间来扩展缓冲区,并在每次扩展时复制字节。 设置构造函数所需的最终大小,你应该看到一些大文件的速度提高。
从Oracle文档:构造函数和说明
ByteArrayOutputStream()
创build一个新的字节数组输出stream。
ByteArrayOutputStream(int size)
创build一个新的字节数组输出stream,具有指定大小的缓冲区容量(以字节为单位)。
ByteArrayOutputStream#toByteArray()
正在做的工作是将内部stream缓冲区中的字节复制到新的字节数组中。
我相信你不需要这样做,因为你将这些字节发送到SOAP。 您应该使用ByteArrayOutputStream#writeTo(OutputStream os)
方法将字节stream中的字节写入您的SOAP输出stream。