我的ImageIO.write ByteArrayOutputStream为什么这么慢?

  • Post author:
  • Post category:其他



问题来源:

1.系统生成二维码,需要不同的图片格式来适应客户端要求

2.图片通过接口模式给客户端,最终使用base64来传递


平常思考模式:

1.BufferedImage首先通过工具把数据生成出来。

2.我绝对不会把这个BufferedImage写磁盘,直接放内存ByteArrayOutputstream后转base64岂不是更快?

3.ImageIO.write正好有个write(BufferedImage img,String format,OutputStream output)

4.真的舒服,我就用它了!


实际情况:

1.Linux环境centos6.8 虚拟化环境

2.JRE1.8

3.接口工作流程:(1) 生成BufferedImage (2) BufferedImage通过ImageIO.write(BufferedImage,”png”,ByteArrayOutputStream out) (3)将ByteArrayOutputStream转化为base64 (4) 接口返回

4.一个普通的链接,生成二维码并返回base64,接口耗时1.7S

5.png图片大小16K


分析问题&尝试更换接口: