我目前使用ByteArrayOutputStream将BufferedImage转换为byte [],然后使用开源类Base64Coder将byte []转换为char [],然后将其附加到String。这是编码视频帧集并将它们置于XML友好格式的多步骤过程的一部分。不要问我为什么要这样做,那只是需要做的。什么是Base64编码图像最快的Java库?
我看到Base64编码占用整个过程的CPU时间〜75%,并且看到我刚刚从谷歌搜索中抓取这个随机类,我确信有更高效的编码图片。我有什么选择家伙?
我目前使用ByteArrayOutputStream将BufferedImage转换为byte [],然后使用开源类Base64Coder将byte []转换为char [],然后将其附加到String。这是编码视频帧集并将它们置于XML友好格式的多步骤过程的一部分。不要问我为什么要这样做,那只是需要做的。什么是Base64编码图像最快的Java库?
我看到Base64编码占用整个过程的CPU时间〜75%,并且看到我刚刚从谷歌搜索中抓取这个随机类,我确信有更高效的编码图片。我有什么选择家伙?
这是一个很古老的问题,但它仍然在谷歌翻起来排名靠前的一个...
这已经在这里全面地回答说: http://java-performance.info/base64-encoding-and-decoding-performance/
从那里以总结:
让我们总结在一个表中的编解码器的性能。该表按照所有这些编解码器的相对性能排序(更快)。
Name Max encoding Max decoding How much we can Supports byte[] -> byte[] len len encode with -Xmx8G Java 8 1.62 G 2 G 1.16 G Yes javax.xml 1.62 G 2 G 1.07 G No MiGBase64 1.62 G 0.36 G 1.07 G Yes IHarder 1.62 G 0.72 G 1.23 G Yes Apache 0.81 G 0.72 G 0.8 G Yes Guava 1.62 G 2 G 1.07 G No Sun.misc 0.79 G 1.05 G 0.78 G No
如果您正在寻找一种快速可靠的Base64编解码器 - 不要向JDK外寻找。 Java 8中有一个新的编解码器:java.util.Base64
,还有一个隐藏在Java 6中的很多人眼中:javax.xml.bind.DatatypeConverter
。两者都是快速可靠的,不会受到整数溢出的影响。
这里描述的4个第三方编解码器中有2个非常快:MiGBase64和IHarder。不幸的是,如果您需要一次处理数百兆字节,只有谷歌Guava将允许您一次解码2G数据(对于IHarder和Apache Commons,在MiGBase64/720M的情况下为360MB)。不幸的是,Guava不支持byte [] - > byte []编码。
不要尝试调用String.getBytes(字符集)上巨大的字符串,如果你的字符集是多字节一个 - 你可能会得到整数溢出有关的异常的全部灰阶。
尝试commons-codec
库在http://commons.apache.org/codec/ 绝对让我们知道结果。这是一个标准和广泛使用的库。
你正在寻找的类是org.apache.commons.codec.binary.Base64
http://commons.apache.org/codec/apidocs/org/apache/commons/codec/binary/Base64.html
比什么效率更高?给算法,或者我们不能告诉你你可以改进什么。 –
看看这里:http://stackoverflow.com/questions/469695/decode-base64-data-in-java 有点类似... –
我已经告诉过你的课,Base64Coder,它是第一个结果谷歌搜索...... – Marty